「リートコード - 8. String to Integer (atoi)」

ジャバソリューション

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
class Solution {
public int myAtoi(String s) {
int n = s.length();
int cur = 0;
for (; cur < n; ++cur) {
if (s.charAt(cur) != ' ') {
break;
}
}
boolean minus = false;
if (cur < n && s.charAt(cur) == '-') {
minus = true;
++cur;
} else if (cur < n && s.charAt(cur) == '+') {
++cur;
}
long res = 0L;
for (; cur < n; ++cur) {
int t = s.charAt(cur) - '0';
if (t >= 0 && t <= 9) {
res = res * 10 + t;
if (!minus && res >= Integer.MAX_VALUE) {
res = Integer.MAX_VALUE;
break;
} else if (minus && res > Integer.MAX_VALUE) {
res = Integer.MAX_VALUE + 1;
break;
}
} else {
break;
}
}
return (int)(minus ? -res : res);
}
}

水模拟,over。