面试题67. 把字符串转换成整数
字符串
class Solution {
public:
int strToInt(string s) {
int res = 0, bndry = INT_MAX / 10;
int i = 0, sign = 1, len = s.length();
if(len == 0) return 0;
while(s[i] == ' ')
if(++i == len) return 0;
if(s[i] == '-') sign = -1;
if(s[i] == '-' || s[i] == '+') i++;
for(int j = i; j < len; j++){
if(s[j] < '0' || s[j] > '9') break;
//INT_MAX = 2147483648
//只需判断当res乘10之前如果等于214748364,则+s[j](如果是7)那么一定>=INT_MAX
if(res > bndry || res == bndry && s[j] > '7')
return sign == 1 ? INT_MAX : INT_MIN;
res = res * 10 + (s[j] - '0');
}
return sign * res;
}
};