【剑指offer】把字符串转换成整数

题目链接:把字符串转换成整数

题意:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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 };
原文地址:https://www.cnblogs.com/Asumi/p/12417136.html