剑指 Offer 20. 表示数值的字符串
2020-09-02 13:46
1036 查看
目录
一、题目内容
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"-1E-16"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。
二、解题思路
-
*代表匹配零次或多次
-
+代表匹配一次或多次
-
?代表匹配零次或一次
-
$匹配输入字符串的结束位置
-
\\.代表小数点
-
\\s代表空格,则\\s*代表匹配多个空格
-
\\d代表匹配一个数字字符,等价于[0-9],则\\d+\\.\\d*可匹配1.或1.0等\\d*\\.\\d+可匹配.0或1.0等
-
[+-]代表匹配包含的任一字符+或-,[+-]?则说明+或-可有可无,例如0e+4和0e4是一样的,都是0.0
-
注意若最后不加上$,则测试样例0e不通过,匹配结果是0,加上$则匹配最后的子表达式([eE][+-]?\d+)?\s*
- 例如:'(\d+[eE]\d+)?'和'(\d+[eE]\d+)?$',匹配0e,前者为'0',后者为None
三、代码
[code]import re class Solution: def isNumber(self, s: str) -> bool: fmt = '\\s*[+-]?((\\d+\\.\\d*)|(\\d*\\.\\d+)|\\d+)([eE][+-]?\\d+)?\\s*$' is_match = re.match(fmt, s) if is_match: print(is_match) return True else: return False if __name__ == '__main__': test = ' -.0e+4 ' s = Solution() ans = s.isNumber(test) print(ans)悲恋花丶无心之人 CSDN认证博客专家 TensorFlow 深度学习 神经网络 计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
相关文章推荐
- leetcode剑指offer20:表示数值的字符串
- 剑指Offer-20:表示数值的字符串
- 【剑指offer】面试题20:表示数值的字符串
- 剑指Offer 面试题20:表示数值的字符串 Java代码实现
- 剑指offer--面试题20:表示数值的字符串
- 2.1 剑指offer 表示数值的字符串
- 剑指offer--面试题54:表示数值的字符串
- 剑指offer——面试题54:表示数值的字符串
- 剑指Offer——表示数值的字符串
- 【剑指Offer】面试题54:表示数值的字符串
- 剑指offer(56):表示数值的字符串
- 剑指20:表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指offer-表示数值的字符串
- 剑指offer第53题:表示数值的字符串
- (C++)剑指offer-53:表示数值的字符串(字符串)
- 剑指offer--表示数值的字符串
- 剑指offer53-表示数值的字符串-Java
- 剑指offer - 表示数值的字符串
- 剑指Offer面试题54:表示数值的字符串