【剑指offer系列】67-把字符串转换成整数(关键字:int最大值)

输入:

"+123a "
“-123a”
“a123”
“123a”

输出

123
-123
0
123

补充:大于2147483647 则取Integer.MAX_VALUE、小于-2147483648则取MIN_VALUE

class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.next();int res = new Main().strToInt(str);System.out.println(res);}private int strToInt(String str) {String s = str.trim();if (s.length() == 0)return 0;char[] ch = s.toCharArray();int sign = 0;//+-号int index = 0;//ch开始遍历的索引//1.判断首元素(+-a)123String firstEle = String.valueOf(ch[index]);if (firstEle.equals("-")){sign = -1;index++;//ch从1开始} else if (firstEle.equals("+")){sign = 1;index++;}else if (ch[index] > '9' || ch[index] <'0'){return 0;}//2.循环遍历数组sign = 1;//123hello这种情况int temp = Integer.MAX_VALUE / 10;int res = 0;for (int i = index; i < ch.length ; i++) {//终止条件if (ch[i] > '9' || ch[i] < 0)break;//最值判断if (res > temp || ((res == temp) && ch[i] > '7'))//不满足终止条件,说明此次ch[i]必为数字return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;//依次res = res * 10 + (ch[i] - '0');}return sign* (int)res;}
}