要求:rt
思路:比较越界用214748364
class Solution {
public:
int strToInt(string str) {
int idx=0,n=str.length();
while(idx<n&&str[idx]==' ')++idx;
int sign=1;
if(idx<n&&str[idx]=='+'){
idx++;
sign=1;
}
else if(idx<n&&str[idx]=='-'){
sign=-1;
idx++;
}
int numlen=0,sum=0;
while(idx<n&&str[idx]>='0'&&str[idx]<='9'){
numlen++;
int tmp=sign*(str[idx]-'0');
if(214748364<=abs(sum)){
if(sign==-1){
if(abs(tmp)>8||214748364<abs(sum))return INT_MIN;
}
else{
if(abs(tmp)>7||214748364<abs(sum))return INT_MAX;
}
}
sum=10*sum+tmp;
++idx;
}
return sum;
}
};