- 如果字符串为空,直接返回0;
- 剔除字符串开始的空格;
- 如果字符串全为空格,返回0;
- 判断正负号,如果没有,默认为'+',正负号标识只允许出现一次,否则返回0;
- 处理后面的数字部分,如果为其他字符,跳出当前循环,返回最终结果;
- 如果累计结果超过最大整数范围,返回范围内最大正负数。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return int整型
*/
int StrToInt(string s) {
// write code here
int len = s.size();
if (len == 0) return 0;
int i = 0, sign = 1, count = 0;
long long num = 0;
while (i < len && s[i] == ' ') i++;
if (i >= len) return 0;
while (i < len && (s[i] == '-' || s[i] == '+')) {
if (s[i] == '-') sign = -1;
i++;
count++;
if (count > 1) return 0;
}
for (; i < len; i++) {
if (s[i] < '0' || s[i] > '9') break;
else {
num = num * 10 + s[i] - '0';
if ((num >= INT_MAX) && sign == 1) return INT_MAX;
if ((num > INT_MAX) && sign == -1) return INT_MIN;
}
}
return sign * num;
}
};