文章目录

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.


很基础且常见的面试题,更多的是考察能否把所有情况考虑周全,注意到以下几点即可AC

  1. 这个字符串是否为空。

  2. 这个字符串是否有非法字符(非0-9之间的字符)。

  3. 这个数是正数或者是负数的情况(第一个字符是否为+,-)。

  4. 是否存在溢出的情况(这个比较难考虑到)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public int atoi(String str) {
if (str == null || str.length() == 0) return 0;
boolean hasSymbol = false;
boolean negative = false;
char[] c = str.trim().toCharArray();
if (c[0] == '+' || c[0] == '-') {
hasSymbol = true;
if (c[0] == '-') negative = true;
}

long result = 0;
for (int i = hasSymbol ? 1 : 0; i < c.length; i++) {
if (c[i] < '0' || c[i] > '9') {
break;
}
result = result * 10 + c[i] - ('9' - 9);
}
if (result > 2147483647) {
return negative ? -2147483648 : 2147483647;
} else {
return (int) (negative ? -1 * result : result);
}
}
文章目录