验证给定的字符串是否可以解释为十进制数字。
例如:
1 | "0" => true |
说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。这里给出一份可能存在于有效十进制数字中的字符列表:
- 数字 0-9
- 指数 - “e”
- 正/负号 - “+”/“-“
- 小数点 - “.”
当然,在输入中,这些字符的上下文也很重要。
问题分析
数值有以下两种模式:
A[.[B]][e|EC]
。[+|-].B[e|EC]
。
其中,A表示数值的整数部分,B表示数值的小数部分,C表示数值的指数部分。
A和C是有符号整数,它们的前面可能存在正负号,也可能没有;B是无符号整数,它的前面没有正负号。
显然,A和B至少要有一个存在。
方法一:正则表达式
1 | class Solution { |
方法二:直接法
1 | class Solution { |
复杂度分析:时间复杂度为O(n),空间复杂度为O(1)。