这个题的话,我自己处理的还是比较复杂的,先去处理空格,再去处理符号,接下来去看是否是数字,如果是数字循环,如果不是数字则退出,然后输出最后的结果,这里的话,如果溢出的话要先去看是正数还是负数再去看这个情况。
https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnoilh/
class Solution {
public:
int myAtoi(string s) {
unsigned int res=0;
//消除前导空格
int i=0,flag=1;
while(s[i]==' '){
i++;
}
//如果是减,
if(s[i]=='-'){
flag=-1;
i++;
}else if(s[i]=='+'){
i++;
}
while(i<s.size()){
if(s[i]>='0'&&s[i]<='9'){
int tmp=res*10+(s[i]-'0');
if(tmp/10!=res){
if(flag==1){
return pow(2,31)-1;
}else{
return flag*pow(2,31);
}
}else{
res=tmp;
}
i++;
}else{
break;
}
}
return res*flag;
}
};
京公网安备 11010502036488号