JZ49 把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
在这里插入图片描述

public class Solution {
    
    
    int n = 0;
    int bool = 1;
    int i =  0;

    public int StrToInt(String str) {
    
    

        int length = str.length();
        //0的情况,0 ,空,非法字符串,溢出
        //判断字符串为空
        if (str.length() == 0) {
    
    
            return 0;
        }
        //判断'-'字符串
        if(str.charAt(0) == '-'){
    
    
            bool = - bool;

            if (-addOrSubtoInt(str) >= Integer.MIN_VALUE ) {
    
    
                return -n;
            }
        }
        //判断'+'字符串
        if(str.charAt(0) == '+'){
    
    
            if (addOrSubtoInt(str) <= Integer.MAX_VALUE ) {
    
    
                return n;
            }
        }
        //不带+ - 转换为数字型
        while (length > 0){
    
    
            if ((str.charAt(i) - '0') >= 0 && (str.charAt(i) - '0') <= 9  ) {
    
    
                n = (str.charAt(i) - '0') + 10*n;
                i++;
                length--;
            }else {
    
    
                return 0;
            }
        }
        return n;
    }
    public int addOrSubtoInt(String str){
    
    
        int length = str.length();
        i = 1;
        while (length > 1){
    
    
            if ((str.charAt(i) - '0') >= 0 && (str.charAt(i) - '0') <= 9  ) {
    
    
                n = (str.charAt(i) - '0') + 10*n;
                i++;
                length--;
            }else {
    
    
                return 0;
            }
        }
        return n;
    }

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41620020/article/details/108544512