《剑指offer》:[49]把字符串转化成整数
来源:互联网 发布:软件人才培训班 编辑:程序博客网 时间:2024/05/01 23:09
题目:把字符串转换为整数,也就是实现atoi()。
2、如何区分字符串为NULL时返回的0还是字符'0'返回的0。
3、'+''-'号也要算合法输入,但是也得注意只有'+''-'号的情况;
4、除了'+''-'号外,'0'到'9'之外的数字也算非法输入;
5、考虑溢出的请款,如果字符串过长,也就是数字过大后会造成溢出;
也许想的还不够周全,但是至少的注意以上的这些情况。
具体实现代码:
类似还有itoa(),将整数数转化为字符串,相反的过程。此题虽然简单,但是就像高考一样,简单的题不一定能做对,能做对的不一定能得分。好吧,下面来看看一看应该注意的地方。
易错点:
1、判断字符串是否为NULL的情况(这是对字符串处理最基本得需要注意的地方)。2、如何区分字符串为NULL时返回的0还是字符'0'返回的0。
3、'+''-'号也要算合法输入,但是也得注意只有'+''-'号的情况;
4、除了'+''-'号外,'0'到'9'之外的数字也算非法输入;
5、考虑溢出的请款,如果字符串过长,也就是数字过大后会造成溢出;
也许想的还不够周全,但是至少的注意以上的这些情况。
具体实现代码:
#include <iostream>using namespace std;enum status{Valid=0,InValid,IsOverFlow};int InputStatue=Valid; //1.注意输入为NULL;int StrToIntCore(const char *strr,bool minus){long long num=0;while(*strr!='\0'){if(*strr>='0' && *strr<='9')//4.输入的字符在0-9之外;{int flag=minus?-1:1;//判断是正还是负;num=num*10+flag*(*strr-'0');if(!minus && num>0x7fffffff || minus && num<(signed int)0x80000000)//5.判断溢出情况;最大的正数0x7fffffff;最小的负数0x80000000{InputStatue=IsOverFlow;num=0;break;}strr++;}else{num=0;break;}}if(*strr=='\0')InputStatue=Valid;return num;}int SteToInt(const char *str){InputStatue=InValid;long long num=0;if(str!=NULL && str!='\0'){bool minus=false;//3.+-号的合法性;if(*str=='+')//'+'str++;else if (*str=='-')//'-'{str++;minus=true;}if(*str!='\0')num=StrToIntCore(str,minus);}return (int)num;//返回的时候转换为int;}int main(){char *strg[7]={"+453434","-342445353","5345734573487537257834","-5345734573487537257834","","+","0"};int num[7]={8,8,8,8,8,8,8};for(int i=0;i<7;i++){num[i]=SteToInt(strg[i]);switch(InputStatue)//2.返回0的判断是错误输入还是正常返回;{case 0:cout<<"the result is:"<<num[i]<<endl;break;case 1:cout<<"输入的数据有误!"<<endl;break;case 2:cout<<"数据转换溢出!"<<endl;break;}}system("pause");return 0;}
运行结果:
1 0
- 《剑指offer》:[49]把字符串转化成整数
- 【剑指Offer】面试题49:把字符串转化为整数
- 剑指offer-字符串转化成整数
- 剑指offer----将字符串转化成整数
- 剑指Offer系列-面试题49:把字符串转化为整数
- 剑指Offer49把字符串转化成整数
- 剑指offer--把字符串转换成整数
- 《剑指offer》把字符串转换成整数
- 《剑指offer》把字符串转换成整数
- [剑指offer]把字符串转换成整数
- 剑指offer|把字符串转换成整数
- 《剑指offer》-把字符串转换成整数
- 剑指offer 把字符串转换成整数
- 剑指offer: 把字符串转换成整数
- 【剑指offer】把字符串转换成整数
- 剑指offer--把字符串转换成整数
- 把字符串转换成整数 剑指offer
- 剑指offer:把字符串转换成整数
- Shell脚本语言与编译型语言的差异
- 值得学习的Unity工程或插件项目
- 111. Minimum Depth of Binary Tree 二叉树的最小深度
- Summary Ranges
- iOS 截屏 长图 拼图
- 《剑指offer》:[49]把字符串转化成整数
- 什么时候使用Shell
- wx/msw/setup.h 错误
- Swift - 选择框(UIPickerView)的用法
- Tomcat源码阅读
- 最短路算法之SPFA算法
- Java中的Collection和Map
- 数据库之简单整体轮廓总结
- javascript window对象