class Solution { public int myAtoi(String str) { str = str.trim(); int n = str.length(); if(n == 0) return 0; char[] arr = str.toCharArray(); int atoi = 1, k = 1; // atoi记录符号,k记录遍历起点 if(arr[0] == '-') { atoi = -1; } else if(arr[0] != '+') { // 注意这里 这个判断可以确定起点 k = 0; } long res = 0; // 防止溢出 for(int i = k; i < n; i++) { if(arr[i] < '0' || arr[i] > '9') break; res = res * 10 + (arr[i] - '0'); // 是>不是>= if(res > Integer.MAX_VALUE) return atoi == -1 ? Integer.MIN_VALUE : Integer.MAX_VALUE; } return (int)(atoi*res); } }