题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647 1a33
输出
2147483647 0
解题思路
依次考虑以下情况:
- 若字符串初始有‘+’、‘-’符号,设置一个bool型变量判断是否为‘-’,若为负数,则最后把结果取负
- 接下来依次检查每个字符,若字符不在‘0’-‘9’之间,则直接把结果置0,中断循环
- 若字符在‘0’-‘9’之间,则先把之前的结果乘10,再加上此字符转换成的数字,最终即可得到结果
代码
1 class Solution { 2 public: 3 int StrToInt(string str) { 4 int res=0; 5 int i=0; 6 bool posi=true; 7 if(str[i]=='+') 8 i++; 9 else if(str[i]=='-'){ 10 i++; 11 posi=false; 12 } 13 while(i<str.size()){ 14 if(str[i]>='0'&&str[i]<='9'){ 15 res*=10; 16 res+=(str[i]-'0'); 17 i++; 18 } 19 else{ 20 res=0; 21 break; 22 } 23 } 24 if(!posi) 25 res=0-res; 26 return res; 27 } 28 };