题目地址:
https://leetcode.com/problems/string-to-integer-atoi/
给定一个字符串 s s s,实现atoi函数。如果得数大于了 2 31 − 1 2^{31}−1 231−1则返回 2 31 − 1 2^{31} − 1 231−1,如果得数小于了 − 2 31 -2^{31} −231则返回 − 2 31 -2^{31} −231。
代码如下:
class Solution {
public:
int myAtoi(string s) {
int i = 0;
int n = s.length();
while (i < n && s[i] == ' ') i++;
if (i == n) return 0;
int sign = 1;
if (s[i] == '+' || s[i] == '-') {
sign = (s[i] == '+') ? 1 : -1;
i++;
}
long res = 0;
for (; i < n && isdigit(s[i]); i++) {
res = res * 10 + (s[i] - '0');
if (res > INT_MAX) return sign == 1 ? INT_MAX : INT_MIN;
}
return (int)(sign * res);
}
};
时间复杂度 O ( l s ) O(l_s) O(ls),空间 O ( 1 ) O(1) O(1)。