表示数值的字符串

表示数值的字符串

https://www.nowcoder.com/practice/6f8c901d091949a5837e24bb82a731f2?tpId=13&&tqId=11206&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

public boolean isNumeric(char[] str) {
        if(str.length == 0)
            return false;
        int index = 0;
        int ecount = 0; //e 的数量
        int pcount = 0; //符号的数量

        if(str[index] == '+' || str[index] == '-')
            index++;
        for(int i = index; i < str.length; i++){
            if(str[i] == '-' || str[i] == '+'){
                // +-号只能放在数字最前面,或者eE的后面,最前面已经在前面先做了判断
                if(str[i-1] != 'e' && str[i-1] != 'E')
                    return false;
                continue;
            }
            if(str[i] == 'e' || str[i] == 'E'){
                ecount++;
                if(ecount > 1)  //e已经出现过了,不能再出现了
                    return false;
                // e不能放在第一位,e的前面必须是数组,e不能放在最后以为
                if(i == 0 || str[i-1] < 48 || str[i-1] > 57 || i == str.length-1)
                    return false;
                pcount++;  //为什么要加呢?因为e的后面就不能加小数点了
                continue;
            }
            if(str[i] == '.'){
                pcount++;
                if(pcount > 1)  //出现过小数点了,不能再出现了
                    return false;
                continue;
            }
            //如果出现其他符号直接返回false
            if((str[i] < 48 || str[i] > 57) && (str[i] != 'e') && (str[i] != 'E') && (str[i] != '.') )
                return false;
        }
        return true;

    }

剑指offer 文章被收录于专栏

为刷过的每一道题都书写一篇题解,便于重复练习~

全部评论

相关推荐

头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务