8. 字符串转整数 (atoi)
题目
代码
class Solution {
public:
int myAtoi(string str)
{
int res=0,sign=1;
int i=str.find_first_not_of(' ');
if(str[i]=='+'||str[i]=='-')
sign=str[i++]=='+'?1:-1;
int base=INT_MAX/10;
while(isdigit(str[i]))
{
if(res>base||(res==base&&(str[i]-'0')>7))
return sign==1?INT_MAX:INT_MIN;
res=res*10+str[i++]-'0';
}
return sign*res;
}
};
思路
先找出是否有符号,如果有则判断是正数还是负数,然后每次加上一位数字之前需要判断是否会导致溢出,如果溢出则直接返回整数最大值或者最小值。
https://github.com/li-zheng-hao