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