zoukankan      html  css  js  c++  java
  • 牛客(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;
        }
  • 相关阅读:
    psi
    firefox修改语言
    automapper
    堆喷图解
    脱壳系列_0_FSG壳_详细版
    脱壳系列_1_UPX壳_详细版
    算法01-最大子数组详解
    逆向MFC程序
    如何执行shell命令
    Unity之流光效果
  • 原文地址:https://www.cnblogs.com/kaibing/p/9099979.html
Copyright © 2011-2022 走看看