题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0;
以下解答牛客网,通过率85%,测试用例-2147483649,无法在int中保存;
int StrToInt(string str) {
//正负,越界,2的31次方2147483648
//int范围是-2^31,2^31-1;
if(str==""||str[0]=='0') return 0;
int i=0;
long long res=0;
if(str[0]=='+'||str[0]=='-'){i++;}
while(str[i]!=' ')
{
if(str[i]>'9'||str[i]<'0')return 0;
res=res*10+(str[i]-'0');
i++;
}
//if(str[0]=='-'&&res>2147483648)return 0;
//if(str[0]!='-'&&res>2147483647)return 0;
return (str[0]=='-')?-res:res;
//return res;
//-2147483649输出为原值,已超过int能存储的范围
}