corner case很多需要注意
1.这个题规定前后的white space都忽略掉 可以有正负号 但是后面就不可以有特殊符号了 比如 +182@#¥ 就返回+182
2. 注意得到数值 是用 c - '0'
3.超int范围的 min max 尤其是负数超范围 因为最开始先把符号存起来 当正数对待了 所以要在过程中判断是否超了max 但是是否是正的min
public class Solution { public int myAtoi(String str) { if (str == null || str.length() == 0) return 0; str = str.trim(); boolean neg = false; int index = 0; if ( str.charAt(0) == '-' ){ neg = true; index ++; } if ( str.charAt(0) == '+' ){ index ++; } long ans = 0; while ( index < str.length() ){ if ( str.charAt(index) -'0' >= 0 && str.charAt(index) -'0' <= 9){ ans = ans * 10 + str.charAt(index) -'0'; System.out.println(ans); if ( ans >= Integer.MAX_VALUE && !neg){ ans = Integer.MAX_VALUE; System.out.println("what"); break; } if ((0 - ans) <= Integer.MIN_VALUE && neg){ return Integer.MIN_VALUE; } index ++; } else break; } if ( neg ) ans = 0 - ans; return (int) ans; } }