public int myAtoi(String str) {
 // corner case        
        if(str==null||str.length()==0)
        return 0;
 //deal head&tail spaces        
        str = str.trim();
 //general case invert        
        int index = 0, sign = 1,start =0;
        long sum   = 0;
        char firstChar = str.charAt(0);
        if(firstChar=='+') {
        sign =1;
        start++;
         }
        else if(firstChar=='-') {
        sign = -1;
        start++;
         }
            for(int i = start;i<str.length();i++){
                if(!Character.isDigit(str.charAt(i))) 
                return (int)sum*sign;
                sum = sum*10 +str.charAt(i)-'0'
  //deal overflow
                if(sign==1&&sum>Integer.MAX_VALUE)
                return Integer.MAX_VALUE;

                if(sign==-1&&(-1)*sum<Integer.MIN_VALUE)
                return Integer.MIN_VALUE;
            }

        return (int) sum*sign;
    }

results matching ""

    No results matching ""