【剑指Offer】把字符串转换成整数

题目

写一个函数StrToInt,实现把字符串转换成整数的功能。不能使用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
36
37
private boolean isInvalid = false;

public int StrToInt(String str) {
if (str == null || str.length() < 1) {
isInvalid = true;
return 0;
}

char[] array = str.toCharArray();
long result = 0;
boolean minus = false;
int index = 0;

if (array[index] == '+')
index++;
else if (array[index] == '-') {
minus = true;
index++;
}

for (; index < array.length; index++) {
if (array[index] < '0' || array[index] > '9') {
isInvalid = true;
return 0;
}

int flag = minus ? -1 : 1;
result = result * 10 + flag * (array[index] - '0');

if ((!minus && result > Integer.MAX_VALUE) || (minus && result < Integer.MIN_VALUE)) {
isInvalid = true;
return 0;
}
}

return (int)result;
}