剑指offer-把字符串转换成整数

 

题目描述

 
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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 };

 

posted @ 2018-04-26 10:41  FlyingWarrior  阅读(289)  评论(0编辑  收藏  举报