mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 19:13:42 +00:00
Update 20. 表示数值的字符串.md
补充题目描述,补充数值组成规则分析与正则表达式各分段的对应说明。
This commit is contained in:
+11
-1
@@ -4,6 +4,8 @@
|
||||
|
||||
## 题目描述
|
||||
|
||||
判断一个字符串是否表示数值(包括整数和小数)。
|
||||
|
||||
```text
|
||||
true
|
||||
|
||||
@@ -27,7 +29,13 @@ false
|
||||
|
||||
## 解题思路
|
||||
|
||||
使用正则表达式进行匹配。
|
||||
按 LeetCode 题面,一个数值由三部分依次组成,首尾可以有空格:
|
||||
|
||||
- 可选的符号 '+' 或 '-';
|
||||
- 小数或整数:至少一位数字,后面可以跟 '.' 和若干位数字(例如 "1."、"3.14"),或者 '.' 后面跟至少一位数字(例如 ".5");
|
||||
- 可选的指数:'e' 或 'E',后面跟可选的符号和至少一位整数,指数不能是小数。
|
||||
|
||||
例如 "-1.5e+3" 拆成 "-"、"1.5"、"e+3" 三部分。每部分直接对应正则表达式中的一段,用到的语法如下:
|
||||
|
||||
```text
|
||||
[] : 字符集合
|
||||
@@ -40,6 +48,8 @@ false
|
||||
\\d : 数字
|
||||
```
|
||||
|
||||
符号部分对应 `[+-]?`,数字部分对应 `(\\d+(\\.\\d*)?|\\.\\d+)`,指数部分对应 `([eE][+-]?\\d+)?`,首尾的空格用 trim() 去掉:
|
||||
|
||||
```java
|
||||
public boolean validNumber(String s) {
|
||||
if (s == null || s.length() == 0)
|
||||
|
||||
Reference in New Issue
Block a user