剑指Offer 67.把字符串转换成整数(细节题)

原题链接

细节题,把题目读懂就能做得出来

附代码

 1 public static int strToInt(String str) {
 2         int begin = 0; // 记录刨除空格以外的第一个有效位
 3         long ans = 0L; // 记录临时答案
 4         char c = ' '; // 记录第一个有效字符
 5         // 找到第一个有效字符
 6         for(int i = 0; i < str.length(); i ++) {
 7             c = str.charAt(i);
 8             if(c == ' ') begin ++;
 9             else break;
10         }
11         // 第一个有效字符可用时才进入计算
12         if(c == '-' || c == '+' || Character.isDigit(c)) {
13             if(c == '-' || c == '+') begin ++;
14             // 将第一个有效字符后的每一位数字进行数学计算
15             for(int i = begin; i < str.length(); i ++) {
16                 char d = str.charAt(i);
17                 if(Character.isDigit(d)) {
18                     ans = ans * 10 + d - '0';
19                     if(ans >= 1L << 31) {
20                         ans = 1L << 31;
21                         break;
22                     }
23                 } else break;
24             }
25             // 最后考虑符号问题
26             if(c == '-') ans = - ans;
27             if(ans == 1L << 31) ans --;
28         }
29         return (int)ans;
30     }
View Code
原文地址:https://www.cnblogs.com/bianjunting/p/14269484.html