Implement atoi which converts a string to an integer.
问题
英文详细描述见链接:string-to-integer
主要题意要求如下:- 将字符串转换为对应的整数
- 忽略字符串开头的空白字符,字符串中数字后面可能存在的其他字符不影响函数返回该数字
- 整数的正负号是可能出现的,数的范围为32位的有符号整数,超出该范围的返回INT_MAX(2^31 − 1) 或者 INT_MIN (−2^31)
- 若字符串最开始的可视字符非有效字符,则返回0
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class Solution {
public:
int myAtoi(string str) {
if (str.empty()) return 0;
int i = 0, sign = 1;
while(i < str.size() && isspace(str[i])) i++;
long base = 0; // 此处使用long,防止数字大于int32导致的溢出
if (i < str.size() && (str[i] == '-' || str[i] == '+'))
sign = str[i++]=='-'? -1 : 1;
while (i < str.size() && isdigit(str[i])) {
base = base * 10 + str[i++] - '0';
if (base > INT_MAX) return sign == -1 ? INT_MIN : INT_MAX;
}
return sign * base;
}
};