将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。如果是非法的整数字符,比如1aa3,则返回0。
class Solution {
public:
int StrToInt(string str) {
if(str.length()==0)
return 0;
bool flag=true;
int k=0;
if(str[0]=='+'){
k++;
}else if(str[0]=='-'){
k++;
flag=false;
}
int num=0;
for(int i=k;i<str.length();i++){
if(str[i]<'0'||str[i]>'9')
return 0;
if(num>INT_MAX/10)
return 0;
if(num==INT_MAX/10&&str[i]-'0'>INT_MAX%10&&flag)
return 0;
if(num==INT_MAX/10&&str[i]-'0'==INT_MAX%10+1&&!flag)
return INT_MIN;
if((num==INT_MAX/10&&str[i]-'0'>INT_MAX%10&&!flag))
return 0;
num*=10;
num+=str[i]-'0';
}
return num*(flag?1:-1);
}
};