剑指 Offer 20. 表示数值的字符串
【摘要】 目录
一、题目内容
二、解题思路
三、代码
一、题目内容
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"-1E-16"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。
二、解题思路
*代表匹配零次或多次 +代...
目录
一、题目内容
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+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
三、代码
-
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)
文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。
原文链接:nickhuang1996.blog.csdn.net/article/details/108360419
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)