• 牛客(53)表示数值的字符串


    //    题目描述
    //    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
    //    例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
    //    但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
        public static boolean isNumeric(char[] str) {
    
            if (str == null) {
                return false;
            }
            //第一个不是数字 + 或者减好
            //多个小数点不是数字
            //含有e|E意外的字母不是数字
            //e|E后面跟小数不是数字
            //含有多个符号不是数字
            int dot = 0;
            int countE = 0;
            int countO = 0;
            int countN = 0;
            for (int i = 0; i < str.length; i++) {
                if (str[i] >= '0' && str[i] <= '9') {
                    countN++;
                }else if (str[i] == 'e' || str[i] == 'E') {
                    if (countN<=0){
                        return false;
                    }
                    //如果e前面不是数字
                    if (str[i-1]<'0'&&str[i-1]>'9'){
                        return false;
                    }
                    //因为e后面不能出现dot 所有
                    if (dot<1){
                        dot=1;
                    }
    
                    i++;
                    //e的下一位可以使+|-
                    if (i<str.length&&(str[i]=='+'||str[i]=='-')){
                        if ((i+1<str.length)){
                            if (!(str[i+1]<'9'&&str[i+1]>'0')){
                                return false;
                            }
                            countN++;
                        }else {
                            return false;
                        }
                        countO--;
                    }else if (i<str.length&&(str[i]<'9'&&str[i]>'0')){
                        countN++;
                    }else{
                        return false;
                    }
                    countE++;
                }else if (str[i] == '+' || str[i] == '-') {
                    if (countN>0){
                        return false;
                    }
                    countO--;
                }else if (str[i]=='.'){
                    dot++;
                }else{
                    return false;
                }
            }
            if (countN<=0||dot>1||countE>1||countO>1){
                return false;
            }
    
            return true;
        }
  • 相关阅读:
    Shiro结合配置文件实战实现权限验证
    Shiro的一些概念解释以及配置了解
    jedis工具类
    【转载】redis的主从复制
    Redis的事务
    redis的持久化
    SSM框架-SpringMVC 实例文件上传下载
    如何设置CentOS 7获取动态及静态IP地址
    阿里云linux centos 一键部署web环境--图文详解
    SVN使用教程总结
  • 原文地址:https://www.cnblogs.com/kaibing/p/9099979.html
Copyright © 2020-2023  润新知