机器学习之路漫漫
MLEW(Maching Learning & Endless Way)

导航

 

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

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

 

posted on 2015-11-17 13:41  suchang  阅读(203)  评论(0编辑  收藏  举报