//参考jDK1.5的Integer.parseInt()源码
public class Solution {
    public int StrToInt(String str) {
        //如果字符为空字符串
        if(str==null){
            return 0;
        }
        //字符串长度
        int length=str.length();
        //字符串转整数值的大小限制
        int limit=-Integer.MAX_VALUE;
        //定义变量存储每一位的字符转成的数值
        int digit=0;
        //返回的结果
        int result=0;
        int mulmin=0;
        //标志位判断该字符串是不是负数
        boolean negative=false;
        //定义指向字符串中字符的指针
        int index=0;
        //如果字符中有字符
        if(length>0){
            //判断第一个字符是不是'+'或者'-'
            char firstChar=str.charAt(0);
            if(firstChar<'0'){
                if(firstChar=='-'){
                    negative=true;
                    limit=Integer.MIN_VALUE;
                }else if(firstChar!='+'){  //不为'+'
                    return 0;
                }
                if(length==1){  //第一个字符既不是'+'和'-'
                    return 0;
                }
                //如果字符串第一个字符为'+'或者'-'
                index++;
            }
            mulmin=limit/10;
            //移动指针继续判断后面的字符
            while(index<length){
                digit=str.charAt(index++)-'0';
                //判断digit是不是数字
                if(digit<0||digit>9){
                    return 0;
                }
                //判断溢出
                if(result<mulmin){
                    return 0;
                }
                result*=10;
                if(result<limit+digit){
                    return 0;
                }
                result-=digit;
            }
        }else{
            return 0;
        }
        return negative? result:-result;
    }
}