[编程题]把字符串转换成整数
把字符串转换成整数
http://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e
判断方法有点暴力
带符号32位int类型整数为-2147483648~2147483647
public:
int StrToInt(string str) {
if (str.size() < 1) {
return 0;
}
bool positive = str[0] == '-' ? false : true;
long res = 0;
for (int i = (str[0] == '-' || str[0] == '+') ? 1 : 0; i < str.size(); i++) {
// 非法字符
if (str[i] < '0' || str[i] > '9') {
return 0;
}
// 不论正负必越界
if (res > INT_MAX / 10) {
return 0;
}
// 正数越界
if (res == INT_MAX / 10 && str[i] > '7' && positive) {
return 0;
}
// 负数越界
if (res == INT_MAX / 10 && str[i] > '8' && !positive) {
return 0;
}
res = res * 10 + (str[i] - '0');
}
return positive ? res : -res;
}
};
查看10道真题和解析
