1.将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0.
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0.
class Solution {
public:
enum Status{kValid=0,kInvalid};//判断是否是合法输入
int g_nStatus=kValid;
int StrToInt(string str) {
g_nStatus=kInvalid;
long long num=0;
if(str.length()==0) return 0;//空字符串
int i=0;
if(str[i]!='\0')
{
bool minus=false;//加减号判断
if(str[i]=='+')
{
i++;
}
else if(str[i]=='-')
{
i++;
minus=true;
}//第一个位置是加减号,记录一下
if(str[i]!='\0')
{
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
{
int flag=minus?-1:1;
num=num*10+flag*(str[i]-'0');
if((!minus&&num>0x7FFFFFFF)||(minus&&num<(signed int)0x80000000))
{
num=0;
break;
}//如果大于最大正数,小于最小负数,就返回0
i++;
}
else
{
num=0;
break;//字母等非法输入
}
}
if(str[i]=='\0')
{
g_nStatus=kValid;//只有成功运行到最后一个字符,才置标识符为合法
}
}
}
return num;
}
};
京公网安备 11010502036488号