File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 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+ };
You can’t perform that action at this time.
0 commit comments