-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathstring-to-integer-atoi.cpp
41 lines (39 loc) · 1.11 KB
/
string-to-integer-atoi.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class Solution {
public:
int myAtoi(string s) {
int num = 0, sign = 1;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == ' ') {
continue;
}
if (s[i] == '+' || s[i] == '-') {
sign = s[i] == '-' ? -1 : 1;
++i;
}
while (i < s.size() && isdigit(s[i])) {
// INT_MAX = 2147483647
// INT_MIN = -2147483648
if (num > INT_MAX/10 || num == INT_MAX/10 && s[i] > '7') {
return INT_MAX;
}
if (num < INT_MIN/10 || num == INT_MIN/10 && s[i] > '8') {
return INT_MIN;
}
num = num*10 + sign*(s[i++]-'0');
}
break;
}
cout<<INT_MAX<<" "<<INT_MIN<<endl;
return num;
}
};
// int myAtoi(string s) {
// stringstream ss(s);
// long ans=0;
// ss>>ans;
// if(ans>INT_MAX)
// return INT_MAX;
// else if(ans<INT_MIN)
// return INT_MIN;
// return ans;
// }