您的位置:首页 > Web前端

剑指 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"都不是。

二、解题思路

  1. *代表匹配零次或多次

  2. +代表匹配一次或多次

  3. ?代表匹配零次或一次

  4. $匹配输入字符串的结束位置

  5. \\.代表小数点

  6. \\s代表空格,则\\s*代表匹配多个空格

  7. \\d代表匹配一个数字字符,等价于[0-9],则\\d+\\.\\d*可匹配1.或1.0等\\d*\\.\\d+可匹配.0或1.0等

  8. [+-]代表匹配包含的任一字符+或-,[+-]?则说明+或-可有可无,例如0e+4和0e4是一样的,都是0.0

  9. 注意若最后不加上$,则测试样例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等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: