当前位置: 首页 > news >正文

算法 - 剑指Offer 表示数值的字符串

题目

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
数值(按顺序)可以分成以下几个部分:
若干空格
一个 小数 或者 整数
(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数
若干空格
小数(按顺序)可以分成以下几个部分:
(可选)一个符号字符(‘+’ 或 ‘-’)
下述格式之一:
至少一位数字,后面跟着一个点 ‘.’
至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字
一个点 ‘.’ ,后面跟着至少一位数字
整数(按顺序)可以分成以下几个部分:
(可选)一个符号字符(‘+’ 或 ‘-’)
至少一位数字
部分数值列举如下:
[“+100”, “5e2”, “-123”, “3.1416”, “-1E-16”, “0123”]
部分非数值列举如下:
[“12e”, “1a3.14”, “1.2.3”, “±5”, “12e+5.4”]

解题思路

这题很简单,直接使用正则匹配查看结果即可,代码简单易懂, 但是这里的效率也是最低的, 可以使用有限状态机为最优解,目前还在学习中, 以下代码是正则匹配代码。

Java代码实现

import java.util.regex.Pattern;
public class IsNumber {public boolean isNumber(String s) {Pattern P = Pattern.compile("\\s*[+-]?((\\d*\\.?\\d+)|(\\d+\\.?))([eE][+-]?\\d+)?\\s*");return P.matcher(s).matches();}
}
http://www.lryc.cn/news/22533.html

相关文章:

  • 初识机器学习
  • VsCode安装PlatformIO 开发ESP arduino,买的板子或者随便ESP,PlatformIO添加Board(不是自定义Board)
  • golang 复杂数据结构解析
  • 不怕被AirTag跟踪?苹果Find My技术越来越普及
  • Linux驱动中的open函数是如何从软件打通硬件呢?
  • Java 基础语法
  • python下如何安装并使用matplotlib(画图模块)
  • 系统分析师---计算机网络思维导图
  • 算法练习(七)数据分类处理
  • nohup ./startWebLogic.sh >out.log 2>1 解析
  • OpenCV 坡度计算(基于DEM,C++版本)
  • IDEA上使用git,知道这几步操作就够了!
  • Shell的退出状态(if语句判断的是某个命令的退出状态)
  • Scala面向对象
  • LLaMA-META发布单卡就能跑的大模型
  • 第一篇自我介绍(单片机)
  • Tik Tok品牌营销,如何做好内容打法
  • 2023年5月软考软件设计师备考经验
  • SpringBoot 2.x ——使用 mail 实现邮件发送
  • 项目结束先别着急庆祝,项目经理还有这些事要做
  • 没想到的 IIFE
  • 「牛客网C」初学者入门训练BC156
  • 【Proteus仿真】【STM32单片机】粮仓温湿度控制系统设计
  • 九年时间,倾情投入,JumpServer开源堡垒机v3.0正式发布
  • 【ROS学习笔记5】服务通信
  • “华为杯”研究生数学建模竞赛2006年-【华为杯】A题:Ad Hoc 网络中的区域划分和资源分配问题(附获奖论文)
  • 编写第一个JAVA程序,常见踩坑记录
  • 求职陷阱:Lazarus组织以日本瑞穗銀行等招聘信息为诱饵的攻击活动分析
  • 【C语言每日一题】判断字符串旋转结果(附加字符串左旋详解)
  • SpringSecurity+JWT+Redis进行用户鉴权和接口权限的控制