题目要求:字符串->整型
* 1. 首先需要丢弃字符串前面的空格。
* 2. 然后可能有正负号(注意只取一个,如果有多个正负号,那么说这个字符串是无法转换的,返回0。比如测试用例里就有个“+-2”)。
* 3. 字符串可以包含0~9以外的字符,如果遇到非数字字符,那么只取该字符之前的部分,如“-00123a66”返回为“-123”。
* 4. 如果超出int的范围,返回边界值(2147483647或-2147483648)。
思路:顺序读取,顺序处理。正数,result=result*10+digit ;负数:result=reuslt*10-digit
1 public int myAtoi(String str) { 2 if(str==null||str.length()==0) return 0; 3 str=str.trim(); 4 5 boolean negative=false; 6 int i=0; 7 if(str.charAt(i)=='+'){ 8 i++; 9 }else if(str.charAt(i)=='-'){ 10 negative=true; 11 i++; 12 } 13 double result=0; //必须要先使用double,否则会先越界 14 for(;i<str.length();i++){ 15 int digit=str.charAt(i)-'0'; 16 if(digit<0||digit>9) break; 17 if(negative==false){ 18 result=result*10+digit; 19 if(result>Integer.MAX_VALUE){ 20 return Integer.MAX_VALUE; 21 } 22 }else{ 23 result=result*10-digit; 24 if(result<Integer.MIN_VALUE){ 25 return Integer.MIN_VALUE; 26 } 27 } 28 } 29 return (int)result; 30 }