2016年10月7日星期五

8. String to Integer (atoi)

Integer:⚠️ overflow!


 public int myAtoi(String str) {  
     int ans = 0;  
     str = str.replaceAll("^\\s*","");  
     if(str.length()==0) return ans;  
     int sign = 1;  
     int i = 0;  
     if(i < str.length()&&str.charAt(i) == '-'){  
       sign = -1;  
       i++;  
     }else if(i == 0 &&str.charAt(i) == '+'){  
       i++;  
     }  
     for(; i < str.length(); i++){  
       if(!Character.isDigit(str.charAt(i)))  //要先check是否合法
         return sign*ans;  
       if(ans > (Integer.MAX_VALUE - str.charAt(i)+'0')/10){  //不是大于等于
         return sign == 1 ? Integer.MAX_VALUE :Integer.MIN_VALUE;  
       }  
       ans = ans * 10 + str.charAt(i)-'0';  
     }  
     return sign*ans;  
   }  

没有评论:

发表评论