当前位置: 首页 > news >正文

string OJ题

下面分享一下string做题心得

        1. 明白字符串中存储的数字为'0' '8'  '9'与0 8 9 完全不同,字符'0'其实在串中存储的是48,要有意识的转化。字符串中如果存数字8,意味着存了BS(退格)

        例如1: 算出结果为5,存入使用s+=(5+'0')

        例如2:读取数据 int num1 = s[i]-'0'

        2. 要熟练运用 s+=  或者 reserve(s1.begin() ,s1.end())或者是s1 = s2与s1.assign(s2)作用相同。

        3. 遇到不熟悉的接口一定要去查一查。

        下面为ascii表

        后面分享了3道oj题

43. 字符串相乘

检验是否是回文串

字符串转整形字符

检验是否是回文串第一题答案

class Solution {
public:string addStrings(string num1, string num2) {int carry=0;string s3;int end1=num1.size()-1;int end2=num2.size()-1;while(end1>=0 ||end2>=0){int x1 = end1 >= 0 ? num1[end1--]-'0' : 0;int x2 = end2 >= 0 ? num2[end2--]-'0' : 0;int end=x1+x2+carry;carry=end/10;end=end%10;s3+=(end+'0');}if(carry==1){s3+='1';}reverse(s3.begin(),s3.end());return s3;}string multiply(string num1, string num2){string return_string("0");if(num1.size()==1&&num1[0]=='0'||num2.size()==1&&num2[0]=='0')return return_string;int end1 = num1.size() - 1;int end2 = num2.size() - 1;int carry = 0;int count[num2.size()+2];int num = 0;for (int i = 1; i <= num2.size(); ++i){string s;int t=i;while(t>1){s+='0';--t;}int numend1 = end1;while (numend1 >= 0){int x1 = num1[numend1--] - '0';int x2 = num2[end2] - '0';int end = x1 * x2 + carry;carry = end / 10;end = end % 10;s += (end+'0');}if (carry > 0){s += (carry+'0');carry=0;}end2--;reverse(s.begin(), s.end());string s3= addStrings(s,return_string);return_string.assign(s3);}return  return_string;}
};

第二题答案

class Solution {
public:bool ischar(char x){if(x>='0'&&x<='9'||x>='A'&&x<='Z'||x>='a'&&x<='z'){return true;}return false;}bool isPalindrome(string s) {for(auto& e:s){if(e>='A'&&e<='Z'){e+=32;}}int begin=0;int end=s.size()-1;while(begin<end){while(begin<end && !ischar(s[begin])){++begin;}while(begin<end && !ischar(s[end])){--end;}if(s[begin]!= s[end]){return false;}else{++begin;--end;}}return true;}
};

第三题答案

class Solution {
public:int myAtoi(string str) {bool sign = true;   //默认为正数// 跳过开头可能存在的空格int i = 0;while(i < str.size() && str[i] == ' ') {i++;}//接着判断首个字符是否为正负号if(str[i] == '-') {sign = false;  // 该字符串为负数,移至下一个字符接着判断i++;          }else if(str[i] == '+')  // 字符串为正数,sign已经默认为true,直接移动到下一位即可i++;   //下面开始对非正负符号位进行判断if(str[i] < '0' || str[i] > '9') // 正常数字第一位不能是0,必须为1~9之间的数字,否则就是非法数字return 0;  int res = 0;   //这里res用的int型,需要更加仔细考虑边界情况,但如果用long的话可以省去一些麻烦int num = 0; int border = INT_MAX / 10;  // 用来验证计算结果是否溢出int范围的数据while(i < str.size()){// 遇到非数字字符,则返回已经计算的res结果if(str[i] < '0' || str[i] > '9') break;// 注意这句话要放在字符转换前,因为需要验证的位数比实际值的位数要少一位, 这里比较巧妙的地方在于// 1. 用低于int型数据长度一位的数据border判断了超过int型数据长度的值 // 2. 将超过最大值和低于最小值的情况都包括了if(res > border || res == border && str[i] > '7')  return sign == true ? INT_MAX : INT_MIN;//开始对数字字符进行转换num = str[i] - '0';res = res * 10 + num;i++;}//最后结果根据符号添加正负号return sign == true ? res : -res;}
};

看到这里啦,你应该已经有了不少收获了

这个博客如果对你有帮助,给博主一个免费的点赞就是最大的帮助

欢迎各位点赞,收藏和关注哦

如果有疑问或有不同见解,欢迎在评论区留言哦

后续我会一直分享双一流211西北大学软件(C,数据结构,C++,Linux,MySQL)的学习干货以及重要代码的分享

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【ai】pycharm安装langchain 相关module
  • 关于linux磁盘告警问题
  • Hadoop 客户端 FileSystem加载过程
  • 前端工具vscode 提交代码git操作
  • vue项目input框使用lodash的debounce防抖
  • 创建vue工程、Vue项目的目录结构、Vue项目-启动、API风格
  • 集成Vision Transformer 的概率模型改进了复杂的息肉分割
  • 几行代码使用Go语言对接第三方工具之集成gin、kite框架、通过原生不借助其他软件实现内网穿透工具
  • Make New 函数 ---golang
  • 第八篇【传奇开心果系列】Python微项目技术点案例示例:以微项目开发为案例,深度解读Dearpygui 编写图形化界面桌面程序的优势
  • FreeRTOS_事件组_学习笔记
  • Unidac连接Excel文件
  • Stream流的使用
  • Windows批处理命令和概念
  • php部分特性漏洞学习
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Angular 2 DI - IoC DI - 1
  • Create React App 使用
  • docker容器内的网络抓包
  • EventListener原理
  • Javascript设计模式学习之Observer(观察者)模式
  • python学习笔记 - ThreadLocal
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 百度小程序遇到的问题
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 机器学习中为什么要做归一化normalization
  • 排序算法学习笔记
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 问题之ssh中Host key verification failed的解决
  • 智能合约Solidity教程-事件和日志(一)
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #预处理和函数的对比以及条件编译
  • $ git push -u origin master 推送到远程库出错
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (55)MOS管专题--->(10)MOS管的封装
  • (Java入门)抽象类,接口,内部类
  • (NSDate) 时间 (time )比较
  • (超详细)语音信号处理之特征提取
  • (二)测试工具
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (汇总)os模块以及shutil模块对文件的操作
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)树状数组
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ***检测工具之RKHunter AIDE
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET Core跨平台微服务学习资源