AcWing 87. 把字符串转换成整数
原题链接
中等
作者:
逆时针
,
2020-08-13 15:23:54
,
所有人可见
,
阅读 382
C++ 代码
class Solution {
public:
int strToInt(string str) {
// 跳过开头空格
int i = 0;
while (i < str.size() && isspace(str[i]))
++i;
// 处理正负号
int sign = 1;
if (str[i] == '+' || str[i] == '-') {
if (str[i] == '-')
sign = -1;
++i;
}
int val = 0;
while (i < str.size() && isdigit(str[i])) {
int digit = str[i] - '0';
// 有两种情况会导致overflow
// 1. 乘10后溢出;2. 加末尾数字后溢出
// 所以在进行以上操作前要先判断
if (val > INT_MAX / 10 || val > INT_MAX - digit) {
if (sign == 1) return INT_MAX;
else return INT_MIN;
}
val = val * 10 + digit;
++i;
}
return sign * val;
}
};