Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 6ca65e6

Browse files
refactor 8
1 parent 2369697 commit 6ca65e6

File tree

1 file changed

+37
-37
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+37
-37
lines changed

src/main/java/com/fishercoder/solutions/_8.java

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,42 @@
22

33
public class _8 {
44

5-
public static class Solution1 {
6-
/**
7-
* four corner cases:
8-
* 1. discards all leading zeroes
9-
* 2. sign of the number
10-
* 3. overflow
11-
* 4. invalid input
12-
* */
13-
public int myAtoi(String str) {
14-
int pointer = 0;
15-
int result = 0;
16-
while (pointer < str.length() && Character.isWhitespace(str.charAt(pointer))) {
17-
pointer++;
18-
}
19-
if (pointer == str.length()) {
20-
return 0;
21-
}
22-
boolean negativeFlag = (str.charAt(pointer) == '-');
23-
if (str.charAt(pointer) == '+' || str.charAt(pointer) == '-') {
24-
pointer++;
25-
}
26-
for (; pointer < str.length(); pointer++) {
27-
if (str.charAt(pointer) > '9' || str.charAt(pointer) < '0') {
28-
break;
29-
} else {
30-
int digit = str.charAt(pointer) - '0';
31-
if (!negativeFlag && result > (Integer.MAX_VALUE - digit) / 10) {
32-
return Integer.MAX_VALUE;
33-
} else if (negativeFlag && result < (Integer.MIN_VALUE + digit) / 10) {
34-
return Integer.MIN_VALUE;
35-
}
36-
result = result * 10 + (negativeFlag ? -digit : digit);
37-
}
38-
}
39-
return result;
40-
}
41-
}
5+
public static class Solution1 {
6+
/**
7+
* four corner cases:
8+
* 1. discards all leading zeroes
9+
* 2. sign of the number
10+
* 3. overflow
11+
* 4. invalid input
12+
*/
13+
public int myAtoi(String s) {
14+
int pointer = 0;
15+
int result = 0;
16+
while (pointer < s.length() && Character.isWhitespace(s.charAt(pointer))) {
17+
pointer++;
18+
}
19+
if (pointer == s.length()) {
20+
return 0;
21+
}
22+
boolean negativeFlag = (s.charAt(pointer) == '-');
23+
if (s.charAt(pointer) == '+' || s.charAt(pointer) == '-') {
24+
pointer++;
25+
}
26+
for (; pointer < s.length(); pointer++) {
27+
if (s.charAt(pointer) > '9' || s.charAt(pointer) < '0') {
28+
break;
29+
} else {
30+
int digit = s.charAt(pointer) - '0';
31+
if (!negativeFlag && result > (Integer.MAX_VALUE - digit) / 10) {
32+
return Integer.MAX_VALUE;
33+
} else if (negativeFlag && result < (Integer.MIN_VALUE + digit) / 10) {
34+
return Integer.MIN_VALUE;
35+
}
36+
result = result * 10 + (negativeFlag ? -digit : digit);
37+
}
38+
}
39+
return result;
40+
}
41+
}
4242

4343
}

0 commit comments

Comments
 (0)