把字符串轉換成整數(劍指offer)


題目描述

將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值為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 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM