Skip to content

Commit 089efe6

Browse files
committed
Add Atoi Iterative Solution
1 parent 3b06b56 commit 089efe6

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public:
3+
int myAtoi(string s) {
4+
5+
// INT_MAX : 2147483647
6+
// E.g. : 2147483648
7+
8+
int i = 0, n = s.size(), ans = 0, sign = 1;
9+
bool isSymbolUsed = false;
10+
11+
while (i<n && s[i]==' '){
12+
i++;
13+
}
14+
15+
while (i<n){
16+
char character = s[i];
17+
if (character == '-' || character == '+'){
18+
if (isSymbolUsed){
19+
break;
20+
} else if (character == '-'){
21+
sign = -1;
22+
}
23+
isSymbolUsed = true;
24+
} else if (character>='0' && character<='9'){
25+
int digit = character - '0';
26+
if ((ans > INT_MAX/10) || (ans==INT_MAX/10 && INT_MAX%10<=digit)){
27+
return INT_MAX;
28+
} else if ((ans < INT_MIN/10) || (ans==INT_MIN/10 && (~INT_MIN%10+1)%10<=digit)){
29+
return INT_MIN;
30+
} else {
31+
ans = ans*10 + sign*digit;
32+
}
33+
isSymbolUsed = true;
34+
} else {
35+
break;
36+
}
37+
i++;
38+
}
39+
40+
return ans;
41+
}
42+
};

0 commit comments

Comments
 (0)