题解 | #将字符串转化为整数#
将字符串转化为整数
http://www.nowcoder.com/practice/44d8c152c38f43a1b10e168018dcc13f
class Solution {
public:
int atoi(const char *str) {
// 1. 处理空字符串
// 2. 忽略前置空格
// 3. 保存符号
// 4. 处理非法输入
// 5. 处理溢出
int idx = 0, sign = 1, val = 0;
// 1. 处理空字符串
if(strlen(str) == 0) return 0;
// 2. 忽略前置空格
while(str[idx] == ' ') ++idx;
// 3. 保存符号
if(str[idx] == '-') {
sign = -1;
++idx;
}
if(str[idx] == '+')
++idx;
for(; idx < strlen(str); ++idx) {
// 4. 处理非法输入
if(str[idx] > '9' || str[idx] < '0')
break;
// 5. 处理溢出
if(val > INT32_MAX / 10 || (val == INT32_MAX / 10 && INT32_MAX % 10 < str[idx] - '0')) {
return sign == 1 ? INT32_MAX : INT32_MIN;
}
val = val * 10 + str[idx] - '0';
}
return val * sign;
}
};
阿里巴巴灵犀互娱公司福利 649人发布
查看16道真题和解析
