Sword to Offer-20 表示数值的字符串 ❀❀

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

解题思路:

1、正则表达式规则如下: []字符集合,指此处可出现集合中存在的任意字符;
()分组;
重复0-1次;
+重复1-n次;
*重复0-n次;
.任意字符;
\\.转义后的.;
\\d数字
2、构成数字的规则:
正负号,小数部分(.d),指数部分(e+3),指数部分的符号(+-)都只能不出现或出现一次;
整数部分数字出现0-n次,可以不出现,小数和指数部分数字出现1-n次,至少要有一次。

AC代码:

// String Stands for a Value or Not

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

补充说明:

  • 注意:数学问题,先分区域,再根据规则从外到里写。

  • 这里是牛客编码链接

Comments


yangzail © 2020. All rights reserved.

Powered by Hydejack v8.5.2