这题与整数反转类似:
class Solution {
public:
int myAtoi(string s) {
//1.丢弃空格
//2.判断正负并记录,跳过
//3.检查整形溢出
int lastnum = 0;
int i = 0;
int flag = 1;
while(i<s.size() && s[i] == ' '){
i++;
}
if(i == s.size())
return 0;
if(s[i] == '-')
flag = -1;
if(s[i] == '-' || s[i] == '+')
i++;
int ret = 0;
while(i < s.size() && s[i] >= '0' && s[i] <= '9'){
int tmp = s[i]-48;
if(flag == 1 && (ret > 214748364 || (ret == 214748364 && tmp>=7))){
return 2147483647;
}
if(flag == -1 && (-ret < -214748364 || (-ret == -214748364 && tmp>=8))){
return -2147483648;
}
ret = ret*10 + tmp;
++i;
}
if(flag == -1){
ret = -ret;
}
return ret;
}
};