剑指offer面试题[49]-把字符串转化为整型
来源:互联网 发布:illustrator cs6 mac 编辑:程序博客网 时间:2024/06/08 17:51
题目:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空。
输出描述:
如果是合法的数值表达则返回该数字,否则返回0。
示例1
输入
+2147483647
1a33
输出
2147483647
0
分析:
我们知道大多数情况下越简单的问题可能越容易出错,这个题目很多人,包括我自己一下子就做出来了,不到十行的代码就问你虚不虚?可是,当我们把很多特殊情况即测试用例都考虑进去的时候,却不是一件很容易的事情。
至少能把空指针NULL、空字符串"",正负号、溢出等问题的测试用例考虑进去并在写代码的时候对这些特殊的输入都定义好合理的输出。当然,这些输出并不一定要和atoi完全保持一致,但必须要有显式的说明,和面试官沟通好,即你的各种情况下的定义输出代表什么意思。
参考代码即VS完整测试代码如下:
#include <iostream>#include <string>using namespace std;long long StartStrTOInt(string s, bool minus, int i){long long num = 0;while (s[i] != '\0'){if (s[i] >= '0'&&s[i] <= '9'){int flag = minus ? -1 : 1;num = num * 10 + flag*(s[i] - '0');if ((minus&&num<(signed int)0X80000000) || (!minus&&num>0x7FFFFFFF)){ //正整数的最大值是0x7FFF FFFF,最小的负整数是0x8000 0000cout << (signed int)0X80000000 << endl;num = 0;break;} //cout << 0X80000000 << endl; //输出2147483648//cout << (signed int)0X80000000 << endl; //输出-2147483648i++;}else{num = 0;break;}}return num;}int StrToInt(string str) {long long num = 0;bool minus = false;if (str.length() != 0){cout << str.length() << endl;int i = 0;if (str[i] == '+'){i++;}else if (str[i] == '-'){i++;minus = true;}if (str[i] != '\0')num = StartStrTOInt(str, minus, i);}return num;}int main(){string input = "+89945";int output;output = StrToInt(input);system("system");}
参考代码
class Solution {public: int StrToInt(string str) { long long num=0; bool minus=false; if(!str.empty()&&str.length()!=0) { int i=0; if(str[i]=='+') { i++; } else if(str[i]=='-') { i++; minus=true; } if(str[i]!='\0') num=StartStrTOInt(str,minus,i); } return num; } long long StartStrTOInt(string s,bool minus,int i) { long long num=0; while(s[i]!='\0') { if(s[i]>='0'&&s[i]<='9') { int flag=minus?-1:1; num=num*10+flag*(s[i]-'0'); if((minus&&num<(signed int)0X80000000)||(!minus&&num>0x7FFFFFFF)) //if((minus&&num<(signed int)0X80000000)||(!minus&&num>0x7FFFFFFF)) { num=0; break; } i++; } else { num=0; break; } } return num; } };
阅读全文
1 0
- 剑指offer面试题[49]-把字符串转化为整型
- 【剑指Offer】面试题49:把字符串转化为整数
- 剑指Offer系列-面试题49:把字符串转化为整数
- 剑指offer--面试题49:把字符串转换成整数
- 剑指Offer:面试题49 把字符串转换成整数
- 剑指offer 面试题49 把字符串转换成整数
- 剑指offer--面试题49:把字符串转换成整数
- 剑指Offer面试题49:把字符串换成整数
- 剑指offer-面试题49-把字符串转换成整数
- 剑指offer 面试题49 把字符串转换成整数
- 剑指offer——面试题:把字符串转换为整数
- 面试题49—把字符串转化成整数
- 【剑指offer】面试题67:把字符串转换成整数
- 整型转化为字符串
- 字符串转化为整型
- 如何用js把字符串转化为整型
- [剑指offer][面试题49]把字符串转换成整数(待完善)
- 剑指offer面试题(49)把字符串转换成整数
- python基础2之数值类型---字符串
- struts2_文件下载
- Java输入输出
- A. I'm bored with life
- Java代码规范、基本类型和实例演练
- 剑指offer面试题[49]-把字符串转化为整型
- 基于openwrt的SPI TFT触摸屏程序
- Go实现map元素的间接排序操作
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
- 数据库主备切换大杂烩
- 真因子
- 基础知识笔记小记
- Ubuntu安装网易云音乐
- termux::安装sqlmap