leetcode解题报告8. String to Integer (atoi)
难度是medium
题目描述
把一个字符串,变成数字
比如”123”, 返回数字123
我的思路
粗看,是很简单的模拟类题目。但是提了几次才过,难点在于考虑各种边界情况(特殊情况)
比如,字符串为空,前面是空字符,前面有符号标示(正负号),字符串包含其他符号,还有溢出等问题。
我的代码
class Solution {
public:
int myAtoi(string str) {
if (str.size() == 0) {
return 0;
}
int index = 0;
int flag = 1;
while (str[index] == ' ') {
index++;
}
if (str[index] == '+' || str[index] == '-') {
if (str[index] == '-') {
flag = -1;
}
index++;
}
long ans = 0;
while (index < str.size()) {
int t = str[index] - 48;
if (t < 0 || t > 9) {
return flag * ans;
}
ans = ans * 10 + t;
if (ans > 2147483647) {
if (flag == -1) {
return -2147483648;
}
return 2147483647;
}
index++;
}
return flag * ans;
}
};
阅读官方题解
没有官方题解,从网上信息来看,题目重点考察的是对特殊情况,边界情况的考虑,也没什么可说的。
思想核心总结
考察对特殊情况,边界情况的考虑