我个人偏向用ACSII值转换成数学问题。

去首尾空格

首字符判断正负

非正负字符过滤首字母0

import java.util.*;


public class Solution {
    /**
     * 
     * @param str string字符串 
     * @return int整型
     */
    public int atoi (String str) {
        // write code here
        str=str.trim();
        //创建一个字符串对象
        //ASCII 48-57 为数字 43 + 45 -
        boolean fs=false;
        String retStr="";
        for(int x=0;x<str.length();x++){
            int a =(int)str.charAt(x);
            if(retStr.length()==0){
                if(a==43){
                    continue;
                }
                if(a==45){
                    fs=true;
                    continue;
                }
            }
            if(a>=48 && a<=57 ) {
                if(!(a==48 && retStr.length()==0)){
                    retStr+=(a-48);
                }
                continue;
             }
             break;
        }
        if("".equals(retStr)){
            return 0;
        }
        return fs==true?0-Integer.valueOf(retStr):Integer.valueOf(retStr);
    }
}