Leetcode算法——65、有效数字(valid number)
判断一个字符串是否可以被翻译为一个小数。
在一个有效的小数中,可能存在的字符有:
1、数字0-9
2、正负号 +/-
3、小数点 .
示例:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3 " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false
思路
通过示例可以看出一些规则:
- 首尾的多个空格可以忽略
- 正负号不能相邻
- 如果有出现了e,那么e前面可以是小数,e后面只能是整数(可以是负数)
- 除了e,不能出现其他任何字母
- “1.” 或者 “.1” 都认为是正确的小数
可以使用正则式匹配,将这些规则统一到一个正则式中,如果可以匹配到,则说明符合规则。
正则式的一些语法:
?:匹配前面的子表达式零次或一次
+:匹配前面的子表达式一次或多次
*:匹配前面的子表达式零次或多次
.:匹配除换行符 \n 之外的任何单字符
^:匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。
$:匹配输入字符串的结尾位置
以上特殊字符如果要匹配本身的话,需要在前面加上\
。
python实现
import re
def isNumber(s):""":type s: str:rtype: bool"""s = s.strip()p1 = r'([0-9]+)' # 整数p2 = r'(([0-9]+)?\.([0-9]+))' # 小数,.前面可以为空p3 = r'(([0-9]+)\.)' # 小数,.后面为空p4 = f'((\+|-)?({p1}|{p2}|{p3}))' # 小数或整数的正则表达式p5 = f'^({p4}|({p4}e(\+|-)?{p1}))$' # 只有小数,或者e前面为小数,e后面为整数if re.match(p5, s):return Trueelse:return Falseif '__main__' == __name__:s = ""print(isNumber(s))
Leetcode算法——65、有效数字(valid number)相关推荐
- LeetCode算法入门- Longest Valid Parentheses -day12
LeetCode算法入门- Longest Valid Parentheses -day12 Given a string containing just the characters '(' and ...
- LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...
- LeetCode算法题-Reach a Number(Java实现)
这是悦乐书的第310次更新,第331篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第179题(顺位题号是754).你站在无限数字线的0号位置.在目的地有个target.在 ...
- 【To Do! 重点 正则表达式】LeetCode 65. Valid Number
LeetCode 65. Valid Number 本博客转载自:[1]http://www.cnblogs.com/yuzhangcmu/p/4060348.html [2]https://blog ...
- LeetCode算法入门- Valid Parentheses -day11
LeetCode算法入门- Valid Parentheses -day11 题目描述: Given a string containing just the characters '(', ')', ...
- LeetCode - #65 有效数字
前言 我们社区陆续会将顾毅(Netflix 增长黑客,<iOS 面试之道>作者,ACE 职业健身教练.)的 Swift 算法题题解整理为文字版以方便大家学习与阅读. LeetCode 算法 ...
- Java实现 LeetCode 65 有效数字
65. 有效数字 验证给定的字符串是否可以解释为十进制数字. 例如: "0" => true " 0.1 " => true "abc&q ...
- LeetCode算法题-Valid Palindrome II(Java实现)
这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...
- LeetCode算法题-Number Complement(Java实现-五种解法)
这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位 ...
最新文章
- 《JavaScript设计模式与开发实践》读书笔记之中介者模式
- 广西计算机学业水平考试,2017年6月广西信息技术学业水平考试(1)-2017广西信息技术会考真题...
- 模拟实现string其中的一些知识点
- 原生js实现选中所有的checkbox
- 理财产品收益可以保证吗?
- 统计学习方法 第八章总结
- DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴寻找聚合
- 极速稳定网络加速服务器,零点云 极速服务器
- 计算机学不学工程制图,如何学好工程制图
- 网络安全之渗透实战学习
- 怎么将两台计算机ping接通,小编教你手把手教你一根网线连接两台电脑实现数据传送...
- 怎么看python是64位还是32位_怎样查看python是64位还是32位
- 图片去水印免费版-图片去水印免费版在线去水印
- 普通打印机,双面打印技巧
- hadoop集群基本配置
- 《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
- 【mybatis】学习笔记 1配置 搭建 入门案例
- DB2 错误解决方案:A system temporary table space with sufficient page size does not exist.. SQLCODE=-1585,
- Ruby/Rails学习教程-Hello Ruby
- Markdown笔记及常用快捷键(自用)