-
Notifications
You must be signed in to change notification settings - Fork 69
/
Copy path054. 转换字符串到整数.java
67 lines (67 loc) · 2.01 KB
/
054. 转换字符串到整数.java
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.math.BigDecimal;
public class Solution
{
public int atoi(String str)
{
int jie_shu = str.length();
int kai_shi = 0;
int state = 0;
for(int i=0;i<str.length();++i)
{
switch(state)
{
case 0:
if(str.charAt(i)==' ')
state = 0;
else if(str.charAt(i)=='-')
{
state = 2;
kai_shi = i;
}
else if(str.charAt(i)=='+')
{
state = 2;
kai_shi = i+1;
}
else if(str.charAt(i)>='0'&&str.charAt(i)<='9')
{
state = 1;
kai_shi = i;
}
else
state = -1;
break;
case 1:
if(str.charAt(i)>='0'&&str.charAt(i)<='9')
state = 1;
else
{
state = 3;
jie_shu = i;
}
break;
case 2:
if(str.charAt(i)>='0'&&str.charAt(i)<='9')
state = 1;
else
state = -1;
break;
}
}
if(state!=1&&state!=3)
return 0;
str=str.substring(kai_shi,jie_shu);
BigDecimal Max = BigDecimal.valueOf(2147483647);
BigDecimal Min = BigDecimal.valueOf(-2147483648);
BigDecimal target = new BigDecimal(str);
BigDecimal mid = new BigDecimal(0);
mid = target.subtract(Max);
if(mid.doubleValue()>0)
target = Max;
mid = target.subtract(Min);
if(mid.doubleValue()<0)
target = Min;
int result = target.intValue();
return result;
}
}