判断一个字符串是否可以被翻译为一个小数。

在一个有效的小数中,可能存在的字符有:
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)相关推荐

  1. LeetCode算法入门- Longest Valid Parentheses -day12

    LeetCode算法入门- Longest Valid Parentheses -day12 Given a string containing just the characters '(' and ...

  2. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...

  3. LeetCode算法题-Reach a Number(Java实现)

    这是悦乐书的第310次更新,第331篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第179题(顺位题号是754).你站在无限数字线的0号位置.在目的地有个target.在 ...

  4. 【To Do! 重点 正则表达式】LeetCode 65. Valid Number

    LeetCode 65. Valid Number 本博客转载自:[1]http://www.cnblogs.com/yuzhangcmu/p/4060348.html [2]https://blog ...

  5. LeetCode算法入门- Valid Parentheses -day11

    LeetCode算法入门- Valid Parentheses -day11 题目描述: Given a string containing just the characters '(', ')', ...

  6. LeetCode - #65 有效数字

    前言 我们社区陆续会将顾毅(Netflix 增长黑客,<iOS 面试之道>作者,ACE 职业健身教练.)的 Swift 算法题题解整理为文字版以方便大家学习与阅读. LeetCode 算法 ...

  7. Java实现 LeetCode 65 有效数字

    65. 有效数字 验证给定的字符串是否可以解释为十进制数字. 例如: "0" => true " 0.1 " => true "abc&q ...

  8. LeetCode算法题-Valid Palindrome II(Java实现)

    这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...

  9. LeetCode算法题-Number Complement(Java实现-五种解法)

    这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位 ...

最新文章

  1. 《JavaScript设计模式与开发实践》读书笔记之中介者模式
  2. 广西计算机学业水平考试,2017年6月广西信息技术学业水平考试(1)-2017广西信息技术会考真题...
  3. 模拟实现string其中的一些知识点
  4. 原生js实现选中所有的checkbox
  5. 理财产品收益可以保证吗?
  6. 统计学习方法 第八章总结
  7. DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴寻找聚合
  8. 极速稳定网络加速服务器,零点云 极速服务器
  9. 计算机学不学工程制图,如何学好工程制图
  10. 网络安全之渗透实战学习
  11. 怎么将两台计算机ping接通,小编教你手把手教你一根网线连接两台电脑实现数据传送...
  12. 怎么看python是64位还是32位_怎样查看python是64位还是32位
  13. 图片去水印免费版-图片去水印免费版在线去水印
  14. 普通打印机,双面打印技巧
  15. hadoop集群基本配置
  16. 《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
  17. 【mybatis】学习笔记 1配置 搭建 入门案例
  18. DB2 错误解决方案:A system temporary table space with sufficient page size does not exist.. SQLCODE=-1585,
  19. Ruby/Rails学习教程-Hello Ruby
  20. Markdown笔记及常用快捷键(自用)

热门文章

  1. maven的install的作用
  2. Python+selenium自动获取Web端斗鱼直播信息
  3. pdf怎么转换成word格式
  4. 计算机主机电源连接,如何将电源线连接到台式计算机机箱?如何安装主机主板的电源线...
  5. CSP题目:跳一跳小游戏
  6. ubuntu18.04 设置桥接模式
  7. html地址栏添加icon小图标
  8. 世界最大的PHP站点 Facebook后台技术探秘
  9. python面向对象实例王者荣耀_Python3 类与对象之王者荣耀对战小游戏
  10. 虚拟机配置虚拟网卡-借鉴和吸收