leetcode 8. 字符串转换整数 (atoi)
丑陋的代码
class Solution {
public:
int myAtoi(string s) {
int i = 0,size = s.size();
bool isPositive = true;
long res = 0;
while(s[i] == ' ') ++i;//跳过空格
if(s[i] == '-'){
isPositive = false;++i;
}
else if(s[i] == '+') ++i;
while(s[i] == '0') ++i;//跳过空余的前置0
for(;i < size;++i){
if(!(s[i] >= '0' && s[i] <= '9')) break;
res = res * 10 + (s[i] - '0');//这样能够及时发现是否超出范围。如果从低位开始加就不好判断,比如6000000000000000000000
if(isPositive && res >= INT_MAX) return INT_MAX;
if(!isPositive && res - 1 >= INT_MAX) return INT_MIN;
}
if(!isPositive) res = -res;
return res;
}
};