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+)?")
    }


  • 相关阅读:
    使用Bat自动打包并通过FTP发送到备份服务器
    IIS 注意事项
    Windows 2008 R2 IP安全策略设置
    修改远程桌面端口
    mac osx 下的apt-get,yum的代替工具 ----homebrew
    mac终端命令大全介绍
    windows 服务器设置相关
    Mac OS 下使用EXE文件
    Mybaits的运行原
    No constructor found in com.website.entity.News matching
  • 原文地址:https://www.cnblogs.com/ziytong/p/12119215.html
Copyright © 2011-2022 走看看