zoukankan      html  css  js  c++  java
  • 表示数值的字符串(剑指offer_20)

    题目描述


         true

    "+100"
    "5e2"
    "-123"
    "3.1416"
    "-1E-16"

    false
    
    "12e"
    "1a3.14"
    "1.2.3"
    "+-5"
    "12e+4.3"

    解题思路

    []  : 字符集合
    ()  : 分组
    ?   : 重复 0 ~ 1 次
    +   : 重复 1 ~ n 次
    *   : 重复 0 ~ n 次
    .   : 任意字符
    \. : 转义后的 .
    \d : 数字
     

    题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

    例子说明

    例如,字符串“+100”,“5e2”,“-123”,“3.1416”及”-1E-16”都表示数值,但“12e”,”1a3.14”,”1.2.3”,”+-5”及“12e+5.4”都不是。   

    解题思路

    在数值之前可能有一个表示正负的’-‘或者’+’。接下来是若干个 0 到 9 的数位表示数值的整数部分(在某些小数里可能没有数值的整数部分)。如果数值是一个小数,那么在小数点后面可能会有若干个 0 到 9 的数位表示数值的小数部分。如果数值用科学计数法表示,接下来是一个’e’或者‘E’,以及紧跟着的一个整数(可以有正负号)表示指数。

    判断一个字符串是否符合上述模式时,首先看第一个字符是不是正负号。如果是,在字符串上移动一个字符,继续扫描剩余的字符串中 0 到 9 的数位。如果是一个小数,则将遇到小数点。另外,如果是用科学计数法表示的数值,在整数或者小数的后面还有可能遇到’e’或者’E’。

    public boolean isNumeric(char[] str)
    {
        if(str == null || str.length == 0)
            return false;
        return new String(str).matches("[+-]?\d*(\.\d+)?([eE][+-]?\d+)?")
    }


  • 相关阅读:
    LeetCode 102. 二叉树的层次遍历
    Java | JDK8下的ConcurrentHashMap#get
    Java | JDK8下的ConcurrentHashMap#putValue
    CCF | 小中大
    Jvm | 《深入理解Java虚拟机》读书笔记 |
    Jvm | 《深入理解Java虚拟机》读书笔记 | 线程安全与锁优化
    3. 帧定格和导出单帧
    2. premiere 项目管理
    1.后期特效合成AE概述&&工作流程&&磁盘缓存清理
    贷款减值准备和折现回拨
  • 原文地址:https://www.cnblogs.com/ziytong/p/12119215.html
Copyright © 2011-2022 走看看