题目链接:把字符串转换成整数
题意:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
题解:过滤掉空格,判断正负号,然后判断每个字符是否是数字,进行转换。但是!!!!这里要考虑一个溢出
做法就是记录正负号的时候,做一个标记,在最后和pow(2,31)做比较。
代码:
1 class Solution { 2 public: 3 int StrToInt(string str){ 4 long long int ans = 0; 5 int len = str.length(); 6 if(len == 0) 7 return 0; 8 //空格 9 int i = 0; 10 while(str[i] == ' ') i++; 11 12 //正负 13 int flag = 1; 14 if(str[i] == '+') 15 i++; 16 else if(str[i] == '-'){ 17 i++; 18 flag = -1; 19 } 20 while(i < len){ 21 if(str[i] <= '9' && str[i] >='0'){ 22 ans = ans*10 + (str[i]-'0'); 23 i++; 24 } 25 else return 0; 26 27 } 28 if(ans * flag >= pow(2,31)) return 0; 29 else if(ans * flag < -pow(2,31)) return 0; 30 return ans * flag; 31 } 32 };