题目描述:
思路:重点关注字符串的起始位置,分情况讨论,若为空格,则继续往后遍历;若为正负号,则定义flag用来保存符号,继续往后遍历;若为数字,则定义res=res*10+(str[i]-'0'),保存数字,并判断结果是否溢出;若为字母,起始位置输出为0,数字之和停止遍历,最后返回即可。
class Solution {
public:
int myAtoi(string str) {
int i=0,flag=1;
long res=0;
//遇到空格
while(str[i]==' ') i++;
//符号的标志位
if(str[i]=='-') flag=-1;
if(str[i]=='-'||str[i]=='+') i++;
//遇到数字
for(;i<str.size()&&isdigit(str[i]);i++){
res=res*10+(str[i]-'0');
//溢出判断
if(res>=INT_MAX&&flag==1) return INT_MAX;
if(res>INT_MAX&&flag==-1) return INT_MIN;
}
return res*flag;
}
};