zoukankan      html  css  js  c++  java
  • 表示数值的字符串


    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 "+100","5e2","-123","3.1416" 和 "-1E-16" 都表示数值。但是 "12e","1a3.14","1.2.3","+-5" 和 "12e+4.3" 都不是


    解题思路

    没啥可投机取巧的,只能一个一个条件判断

    public class Solution {
        public boolean isNumeric(char[] str) {
            if(str.length == 0) {
                return false;
            }
            if(str.length == 1) {
                if(str[0] < '0' || str[0] > '9') {
                    return false;
                }
            }
            // 标记符号、小数点、e/E 是否出现过
            boolean sign = false, decimal = false, hasE = false;
            for(int i = 0; i < str.length; i++) {
                if(str[i] == 'e' || str[i] == 'E') {
                    // e 后面一定要接数字
                    if(i == str.length - 1) {
                        return false;
                    }
                    // 不能同时存在两个 e
                    if(hasE) {
                        return false;
                    }
                    hasE = true;
                } else if(str[i] == '+' || str[i] == '-') {
                    // 第二次出现 +/- 符号,则必须紧接在 e 之后
                    if(sign && str[i - 1] != 'e' && str[i - 1] != 'E') {
                        return false;
                    }
                    // 第一次出现 +/- 符号,且不在字符串开头,也必须紧接在 e 之后
                    if(!sign && i > 0 && str[i - 1] != 'e' && str[i - 1] != 'E') {
                        return false;
                    }
                    sign = true;
                } else if(str[i] == '.') {
                    // e 后面不能接小数点,小数点不能出现两次
                    if(hasE || decimal) {
                        return false;
                    }
                    decimal = true;
                } else if(str[i] < '0' || str[i] > '9') {
                    // 不合法字符
                    return false;
                }
            }
            return true;
        }
    }
    

  • 相关阅读:
    WebApp 里Meta标签大全,webappmeta标签大全
    写给自己的Java程序员学习路线图
    JAVA学习路线图
    JavaScript经典作用域问题(转载)
    js 判断当前操作系统是ios还是android还是电脑端
    css动画,展开折叠图标
    CSU 1335 高桥和低桥
    codevs 1341 与3和5无关的数
    noi 7827 质数的和与积
    51nod 1082 与7无关的数
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/14141864.html
Copyright © 2011-2022 走看看