leetcode 原题 提交多次终于成功通过
主要问题分析:
计算数值是否越界,开始用的long long 类型,最终发现还是cover不住,需要double类型
int myAtoi(string s) {
if(s.empty())
return 0;
int pos = 0;
double num = 0;
for(; pos < s.length() && s[pos] == ' '; pos++);
if(s[pos] >= '0' && s[pos] <= '9'){
for(; pos < s.length() && s[pos] >= '0' && s[pos] <= '9'; pos++){
num = num * 10 + (s[pos] - '0');
}
}
else if(s[pos] == '+' || s[pos] == '-'){
int flag = s[pos]=='+'?1:-1;
for(pos+=1; pos < s.length() && s[pos] >= '0' && s[pos] <= '9'; pos++){
num = num*10+(s[pos]-'0');
}
num = flag*num;
}
else return 0;
if(num > ~((1<<(sizeof(int)*8-1))) )
return ~((1<<(sizeof(int)*8-1)));
if(num < (1<<(sizeof(int)*8-1)))
return (1<<(sizeof(int)*8-1));
return (int)num;
}