String to Integer (atoi)

public class Solution {
    public int atoi(String str) {
        if(str.length() == 0 || str == null){
            return 0;
        }
        
        str = str.trim();
        boolean positiveflag = true;
        
        if(str.charAt(0) == '+'){
            str = str.substring(1);
        }else if(str.charAt(0) == '-'){
            positiveflag = false;
            str = str.substring(1);
        }
        
        long result = 0;
        
        for(int i =0; i< str.length(); i++){
            char d = str.charAt(i);
            if(d >= '0' && d <= '9'){
                result = result*10 + (d-'0');
            }else{
                break;
            }
        }
        
        if(!positiveflag){
            result = result*(-1);
        }
        
        if(result < Integer.MIN_VALUE){
            return Integer.MIN_VALUE;
        }
        
        if(result > Integer.MAX_VALUE){
            return Integer.MAX_VALUE;
        }
        
        return (int)result;
        
        
        
        
    }
}

 

ref:http://www.cnblogs.com/feiling/p/3158218.html

本题需要注意如下几点:

  1. 开头有任意多个空格,需要trim
  2. 数字开头可能有符号,+,—
  3. 输入可能不是一个整数,如12dds返回12;abc返回0
  4. 输入整数可能会超过整数表示范围,如超过则返回 INT_MAX (2147483647) or INT_MIN (-2147483648)
posted @ 2014-01-23 16:04  Razer.Lu  阅读(169)  评论(0编辑  收藏  举报