LeetCode 8. 字符串转换整数 (atoi)
原题链接
中等
作者:
optimjie
,
2020-05-04 20:58:49
,
所有人可见
,
阅读 739
typedef long long LL;
class Solution {
public:
int myAtoi(string str) {
LL res = 0; // 因为计算过程可能爆int,所以long long
bool isNeg = false;
int i = 0, n = str.size();
for (; str[i] == ' '; i++); // 跳过所有的空格
if (str[i] == '-') isNeg = true, i++; // 判断符号,并跳过
else if (str[i] == '+') i++;
else if (!(str[i] >= '0' && str[i] <= '9')) return 0; // 判断第一个非空格个字符是否为数字
for (; i < n && str[i] >= '0' && str[i] <= '9'; i++) { // 遍历所有的数字
if (isNeg) res = res * 10 - (str[i] - '0'); // 若是负数则,减去,反之加上
else res = res * 10 + str[i] - '0';
if (res > INT_MAX) return INT_MAX; // 在计算的过程中若超出int的范围则直接返回
if (res < INT_MIN) return INT_MIN;
}
return (int)res;
}
};
// 判断第一个非空格个字符是否为数字 , 这里是不符合题意的,因为题目要求不能忽略就直接返回。
isNeg
是什么意思?字面意思,isNegetive
嗯嗯,刚没仔细看,看仔细后发现写得很详细,刚AC了hh。