字符串转成整数
https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&&tqId=11202&rp=6&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
【题目解析】:
本题本质是模拟实现实现C库函数atoi,不过参数给的string对象
【解题思路】:
解题思路非常简单,就是上次计算的结果*10,相当于10进制进位,然后加当前位的值。
例如:“123”转换的结果是
sum=0
sum*10+1->1
sum*10+2->12
sum*10+3->123
本题的关键是要处理几个关键边界条件:
-
空字符串
-
正负号处理
-
数字串中存在非法字符
class Solution { public: int StrToInt(string str) { if(str.empty()) return 0; int sy = 1; if(str[0] == '-') { sy = -1; str[0] ='0';//因为后面要减去字符0 所以给符号位复制字符0 } else if(str[0] == '+') { sy = 1; str[0] = '0'; } int sum = 0; for(int i=0;i<str.size();++i) { if(str[i]<'0'||str[i]>'9') { sum = 0;//如果数字字符串中存在非法字符或者不属于数字字符的元素直接返回0即可 break; } sum = sum*10+(str[i]-'0'); } return sy*sum; } };