题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 
输入描述:
输入一个字符串,包括数字字母符号,可以为空


输出描述:
如果是合法的数值表达则返回该数字,否则返回0

输入例子:
+2147483647
    1a33

输出例子:
2147483647
    0
 1 class Solution {
 2 public:
 3     int StrToInt(string str) {
 4         int len = str.size();
 5         if (len == 0)
 6             return 0;
 7         for (int i = 1; i<len; ++i)
 8         {
 9             if (str[i] - '0' < 0|| str[i] - '0' > 9)
10             {
11                 return 0;
12             }
13         }
14         vector<int> vet;
15         
16         if (str[0] == '-' || str[0] == '+' || (str[0] - '0' >= 0 && str[0] - '0' <= 9))
17         {
18             for (int i = 1; i<len; ++i)
19             {
20                 if (str[i] - '0' >= 0 && str[i] - '0' <= 9)
21                 {
22                     vet.push_back(str[i] - '0');
23                 }
24             }
25         }
26         else
27         {
28             return 0;
29         }
30         int sum = 0;
31         if (str[0] == '-')
32         {
33             for (int i = 0; i<vet.size(); ++i)
34             {
35                 sum=sum * 10 + vet[i];
36             }
37             return -sum;
38         }
39         else
40         {
41             if (str[0] == '+')
42             {
43                 for (int i = 0; i<vet.size(); ++i)
44                 {
45                     sum = sum * 10 + vet[i];
46                 }
47                 return sum;
48             }
49             else
50             {
51                 sum = sum * 10 + (str[0] - '0');
52                 for (int i = 0; i<vet.size(); ++i)
53                 {
54                     sum = sum * 10 + vet[i];
55                 }
56                 return sum;
57             }
58         }
59     }
60 };

 

posted on 2017-06-14 09:45  无惧风云  阅读(6094)  评论(1编辑  收藏  举报