題目要求:字符串->整型
* 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 }
新聞熱點
疑難解答