你的位置:首页 > Java教程

[Java教程]【Leetcode


题目要求:字符串->整型

  * 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   }