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; } };