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