面试题:把字符串转换为整数

题目描述:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

思路:从前到后判断

1)是否有正负号

2)是否有非数字字符

3)是否溢出

public class Solution {
    public int StrToInt(String str) {
        if(str==null) return 0;
        if(str.length()==0) return 0;
        int num=0;
        int flag=1;//默认是正数
        int len=str.length();
        for(int i=0;i<len;i++){
            if(i==0&&str.charAt(i)=='+'){
                flag=1;
            }else if(i==0&&str.charAt(i)=='-'){
                flag=0;
            }else if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
                num=num*10 + str.charAt(i) - '0';
                //判断溢出
                if(num>Integer.MAX_VALUE) return 0;
            }else{
                return 0;
            }
        }
        //负数可以表示为0-num
        return  flag==1?num:-num;
    }
}
原文地址:https://www.cnblogs.com/Aaron12/p/9543543.html