8. 字符串转换整数 (atoi)
题解:注意t=(1<<31)-1已经是超过int的值,应该先对(long)(1<<31)进行long处理,然后进行操作
class Solution {
public:
int myAtoi(string s) {
if(s.size()==0) return 0;
int sign=1;
int k=0;
while(s[k]==' '&&k<s.size()) k++;
if(k>=s.size()) return 0;
if(s[k]=='+'){
k++;
}else if(s[k]=='-'){
sign=-1;
k++;
}
long t=0;
if(s[k]<'0'||s[k]>'9') return 0;
while(k<s.size()&&s[k]>='0'&&s[k]<='9'){
int tmp=t;
t=t*10+s[k]-'0';
if(t/10!=tmp){
break;
}
k++;
}
t=t*sign;
if(((int)t)==t){
return (int )t;
}else{
if(sign==1) return ((long)(1<<31)-1);
else return -1*(long)(1<<31);
}
}
};