【剑指offer】把字符串转换为数字--java实现

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0. 解析:本题需要额外知识点,如数字的ASCII为48-57.将字符0-9转换为数字,则需要计算c=c-‘0’。 另外字符串转换为数组的代码为 char[] array=str.toCharArray();

public class Solution {
          
   
    public int StrToInt(String str) {
          
   
        if(str==null)return 0;
        int sum=0;  //当前的数
        char[] array=str.toCharArray();
        boolean minus=false;
        for(int i=0;i<array.length;i++){
          
   
            if(i==0&&array[i]==-){
          
   
                minus=true;
            }else if(i==0&&array[i]==+){
          
   
                minus=false;
            }else{
          
   
                int a=array[i]-0;  //得到当前的数字
                if (a<0||a>9)return 0;  //如果非数字,直接返回0
                sum=(minus==false)?sum*10+a:sum*10-a;
                if((!minus&&sum>Integer.MAX_VALUE)||
                   (minus&&sum<Integer.MIN_VALUE))return 0;
                //如果sum大于int的最大值,或者小于最小值,返回0
            }
            
        }
        return sum;
    }
}
经验分享 程序员 微信小程序 职场和发展