字符串转化为整数

题目:

字符串转换为整数 : atoi

可能的输入:
1 带符号数
2 无符号数
3 零
4 空指针
5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常
6 非法输入,比如并不是一个0-9或者+ -组成的字符串 – 对于非法输入一律返回的是Integer.MIN_VALUE

 

解答:

 1 public class Solution {
 2 
 3     public static long strToInt(String str) {
 4         if(str == null) {
 5             return Long.MIN_VALUE;
 6         }
 7 
 8         if(str.length() == 0) {
 9             return 0;
10         }
11 
12         for(int i = 0; i < str.length(); i++) {
13             if(!judge(str.charAt(i))) {
14                 return Long.MIN_VALUE;
15             }
16         }
17 
18         char[] chars = str.toCharArray();
19         long result = 0;
20 
21         if(char[0] == '+' || char[0] == '-') {
22             result = trans(str.substring(1));
23         } else {
24             result = trans(str);
25         }
26 
27         if(result > 0 && char[0] == '-') {
28             result = -result;
29         }
30 
31         return result;
32     }
33 
34     public static boolean judge(char c) {
35         if(c == '+' || c == '-' || (c >= '0' && c <= '9')) {
36             return true;
37         } else {
38             return false;
39         }
40     }
41 
42     private static long trans(String str) {
43         if(str.length() == 0) {
44             return 0;
45         }
46 
47         long result = 0;
48         for(int i = 0; i < str.length(); i++) {
49             result = result*10 + str.charAt(i)-'0';
50 
51             // important here
52             if(result > Long.MAX_VALUE) {
53                 result = Long.MAX_VALUE;
54                 break;
55             }
56         }
57 
58         return result;
59     }
60 }

 

posted @ 2019-03-05 15:45  林木声  阅读(219)  评论(0编辑  收藏  举报