0
点赞
收藏
分享

微信扫一扫

把字符串转换成整数Java 牛客题目

yellowone 2022-04-23 阅读 51
java

虽然,代码看起来很多,但是思路很简单,只要理解题意。 题目意思就是:字符串第一位只能是数字或者“+”,“-”这俩符号,后面只能是数字。(特殊用例:如果字符串为空或者只有一个字符,是0或者“+”或者“-”,返回0),处特殊用例外,如果第一个字符是“+”或者数字,后面都是数字,只输出数字即可,如果第一个字符是“-”,输出的数字要带上“-”,就这么简单。

用一个字符数组把字符串拆开放进去,字符串为空,字符串只有一个,是 “0”,“-”,“+”,都直接返回0。

定义一个结果初始化为空字符,如果字符数组第一个是“+”,“-”,数字的话,在进行接下来的判断,否则直接return 0。然后分情况,第一个是“+”,直接遍历剩下的数组,都是数字的话,放进去结果字符然后转成数字输出。第一个“-”,遍历剩下的数组,都是数字的话,放进去结果字符加上“-”号然后转成数字输出。第一个是数字,直接放进结果集,转成数字输出。

以下附上代码:(可以简化)

public int StrToInt(String str) {
        if (str.length() == 0 || (str.length() == 1 && str.charAt(0) == '0')) {
            return 0;
        }
        if(str.length() == 1 ){
            if(str.charAt(0) == '-'||str.charAt(0) == '+'){
                return 0;
            }
        }
        char[] arr = str.toCharArray();
        String ret = "";
        for (int i = 0; i < str.length(); i++) {
            arr[i] = str.charAt(i);
        }
        if (arr[0] == '+' || arr[0] == '-' || (arr[0] > '0' && arr[0] < '9')) {
            //第一个字符是+
            if (arr[0] == '+') {
                for (int i = 1; i < arr.length; i++) {
                    if (arr[i] <= '9' && arr[i] >= '0') {
                        ret += arr[i];
                    } else {
                        return 0;
                    }
                }
            }
            //第一个字符是-
            if (arr[0] == '-') {
                ret += '-';
                for (int i = 1; i < arr.length; i++) {
                    if (arr[i] <= '9' && arr[i] >= '0') {
                        ret += arr[i];
                    } else {
                        return 0;
                    }
                }
            }
            //第一个字符是数字
            if (arr[0] > '0' && arr[0] < '9') {
                for (int i = 0; i < arr.length; i++) {
                    if (arr[i] <= '9' && arr[i] >= '0') {
                        ret += arr[i];
                    } else {
                        return 0;
                    }
                }
            }
        } else {
            return 0;
        }
        //将字符串转化成数字
        return swap(ret);
    }

    private static int swap(String ret) {
        int parseInt=0;
        if(ret.charAt(0)>='0'&&ret.charAt(0)<='9'){
            //第一个是数字
            parseInt=Integer.parseInt(ret);
        }
        if(ret.charAt(0)=='-'){
            parseInt=Integer.parseInt(ret);
        }
        return parseInt;
    }

 

举报

相关推荐

0 条评论