剑指offer之【把字符串转换成整数】

题目:

  把字符串转换成整数

链接:

  https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述:

  将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 

  输入描述: 输入一个字符串,包括数字字母符号,可以为空

  输入例子:+2147483647 ,1a33

  输出例子:21474838647 ,0

思路:

  这个题目较简单,没有涉及科学计数

  非数字的情况如+,-只能出现在第一位,所以对第一位数字进行判断,后续位置只能是数字,

代码:

  

 1 class Solution{
 2 public:
 3     int StrToInt(string str){
 4         int len = str.length();
 5         if(len <= 0){
 6             return 0;
 7         }
 8         int flag =1;
 9         int sum = 0;
10         for(int i = 0;i<len;++i){
11             if(i == 0){
12                 if(str[i] == '-'){
13                     flag = -1;
14                 }
15                 else if(str[i]>='0' && str[i] <= '9'){
16                     sum += (str[i] - '0');
17                 }
18                 else if(str[i] == '+'){
19                     flag == 1;
20                 }
21                 else{
22                     return sum;
23                 }
24             }
25             else if( str[i] < '0' || str[i] > '9'){
26                 return 0;
27             }
28             else{
29                 sum = sum*10 +  str[i]- '0';
30             }
31         }
32         return sum*flag;
33     }
34 };
原文地址:https://www.cnblogs.com/wangshujing/p/6959247.html