题目大意:将字符串转换为整型,有几点需要注意:
1.开头所有空格都需要过滤掉,从第一个非空字符开始转换
2.加减号只能出现在非空的首字符
3.如果中间遇到非数字字符,返回字符前的数字
4.如果合法数字前出现了非数字字符,返回0
5.如果字符串表示的数字溢出,返回INT_MAX (2147483647) or INT_MIN (-2147483648)
代码:转载自https://blog.csdn.net/fly_yr/article/details/45312667
class Solution {
public:
int myAtoi(string str) {
if(str.length() == 0)
return 0;
//用于存储结果
long long result = 0 ;
int sign = 1 , i=0;
while(str[i] == ' '){
i++;
}
if(str[i] == '+')
i++;
else if(str[i] == '-'){
sign = -1;
i++;
}
for(int j=i ; j<str.length() ; j++){
if(str[j]>='0' && str[j]<='9'){
result = result * 10 + (str[j]-'0');
if(result > INT_MAX)
return sign < 0 ? INT_MIN : INT_MAX;
}
else break;
}
result *= sign;
return (int)result;
}
};