LeetCode 8. String to Integer (atoi)
问题链接
LeetCode 8. String to Integer (atoi)
题目解析
字符串转换成数字。
解题思路
个人认为题目并没有完全讲清楚题意。最初以为需要考虑多种情况,小数啊指数啊什么的,后面发现不是这样的,这题只要关注字符数字问题以及范围问题。
1.跳过空格字符;
2.判断正负号;
3.判断数字,顺便判断范围。
注意正负号和数字要连续,不能断;数字之后再出现非数字字符,直接返回,后面的字符补在理会。
参考代码
class Solution {
public:
int myAtoi(string str) {
if (str.empty()) return 0;
int sign = 1, i = 0, len = str.size();
int res = 0;
while (i < len && str[i] == ' ') i++;
if (str[i] == '+' || str[i] == '-')
sign = (str[i++]=='+' ? 1 : -1);
while (i < len && str[i] >= '0' && str[i] <= '9') {
if (res > INT_MAX/10 || (res == INT_MAX/10 && str[i] >= '8'))
return sign==1 ? INT_MAX : INT_MIN;
res = res*10 + (str[i]-'0');
i++;
}
return sign * res;
}
};
LeetCode All in One题解汇总(持续更新中...)
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.