首先说一下,这个题可能第一次看到会想的很简单,情况还是很多的,多想想。
具体没啥思路,正常处理吧,具体看注释吧
class Solution {
public:
int myAtoi(string str) {
int index=0,sign=1,total=0;
//如果字符串为空,直接返回0
if(str.length()==0) return 0;
//去除前面的空格
while(str[index]==' '&&index<str.length()){
index++;
}
//判断符号
if(str[index]=='+'||str[index]=='-'){
sign=str[index]=='+'?1:-1;
index++;
}
//正常判断
while(index<str.length()){
//直接字符转INT型
int digit=str[index]-'0';
if(digit<0||digit>9) break;
//判断是否超过边界,超过的话直接根据符号直接返回最大值或者最小值
if(INT_MAX/10<total||(INT_MAX/10==total&&INT_MAX%10<digit)){
return sign==1?INT_MAX:INT_MIN;
}
//进行叠加
total=10*total+digit;
index++;
}
return total*sign;//符号*数值
}
};