剑指 Offer 20. 表示数值的字符串(java+python)
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
数值(按顺序)可以分成以下几个部分:
若干空格
一个 小数 或者 整数
(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数
若干空格
小数(按顺序)可以分成以下几个部分:
(可选)一个符号字符(‘+’ 或 ‘-’)
下述格式之一:
至少一位数字,后面跟着一个点 ‘.’
至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字
一个点 ‘.’ ,后面跟着至少一位数字
整数(按顺序)可以分成以下几个部分:
(可选)一个符号字符(‘+’ 或 ‘-’)
至少一位数字
部分数值列举如下:
[“+100”, “5e2”, “-123”, “3.1416”, “-1E-16”, “0123”]
部分非数值列举如下:
[“12e”, “1a3.14”, “1.2.3”, “±5”, “12e+5.4”]
示例 1:
输入:s = "0"
输出:true
示例 2:
输入:s = "e"
输出:false
示例 3:
输入:s = "."
输出:false
示例 4:
输入:s = " .1 "
输出:true
提示:
1 <= s.length <= 20
s 仅含英文字母(大写和小写),数字(0-9),加号 ‘+’ ,减号 ‘-’ ,空格 ’ ’ 或者点 ‘.’ 。
java
class Solution {public boolean isNumber(String s) {Map[] states = {new HashMap<>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }},new HashMap<>() {{ put('d', 2); put('.', 4); }},new HashMap<>() {{ put('d', 2); put('.', 3); put('e', 5); put(' ', 8); }},new HashMap<>() {{ put('d', 3); put('e', 5); put(' ', 8); }},new HashMap<>() {{ put('d', 3); }},new HashMap<>() {{ put('s', 6); put('d', 7); }},new HashMap<>() {{ put('d', 7); }},new HashMap<>() {{ put('d', 7); put(' ', 8); }},new HashMap<>() {{ put(' ', 8); }}};int p = 0;char t;for(char c : s.toCharArray()) {if(c >= '0' && c <= '9') t = 'd';else if(c == '+' || c == '-') t = 's';else if(c == 'e' || c == 'E') t = 'e';else if(c == '.' || c == ' ') t = c;else t = '?';if(!states[p].containsKey(t)) return false;p = (int)states[p].get(t);}return p == 2 || p == 3 || p == 7 || p == 8;}
}
python
class Solution(object):def isNumber(self, s):states = [{ ' ': 0, 's': 1, 'd': 2, '.': 4 },{ 'd': 2, '.': 4 } ,{ 'd': 2, '.': 3, 'e': 5, ' ': 8 },{ 'd': 3, 'e': 5, ' ': 8 },{ 'd': 3 },{ 's': 6, 'd': 7 },{ 'd': 7 },{ 'd': 7, ' ': 8 },{ ' ': 8 }]p = 0for c in s:if '0' <= c <= '9': t = 'd'elif c in "+-": t = 's'elif c in "eE": t = 'e'elif c in ". ": t = celse: t = '?'if t not in states[p]: return Falsep = states[p][t]return p in (2, 3, 7, 8)
相关文章:
剑指 Offer 20. 表示数值的字符串(java+python)
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数…...
程序员的逆向思维
前要: 为什么你读不懂面试官提问的真实意图,导致很难把问题回答到面试官心坎上? 为什么在面试结束时,你只知道问薪资待遇,不知道如何高质量反问? 作为一名程序员,思维和技能是我们职场生涯中最重要的两个方面。有时候…...
吐血整理学习方法,2年多功能测试成功进阶自动化测试,月薪23k+......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 测试进阶方向 测试进…...
mysql慢查询:pt-query-digest 分析
"某些SQL语句执行效率慢",这个问题总体上分为两类: 出现了慢查询语句某些查询语句没有使用索引 由于数据的写入量非常大,所以要想直接打开慢查询日志来查看到底哪些语句有问题几乎是不可能的,因为日志的刷新速度太快了…...
git的使用整合
git的下载和安装暂时不论述了,将git安装后会自动配置环境变量,所以环境变量也不需要配置。 一、初始化配置 打开git bash here(使用linux系统下运行的口令),弹出一个类似于cmd的窗口。 (1)配置属性 git config --glob…...
XCPC第九站———背包问题!
1.01背包问题 我们首先定义一个二维数组f,其中f[i][j]表示在前i个物品中取且总体积不超过j的取法中的最大价值。那么我们如何得到f[i][j]呢?我们运用递推的思想。由于第i个物品只有选和不选两种情况,当不选第i个物品时,f[i][j]f[i…...
【软考 系统架构设计师】论文范文④ 论基于构件的软件开发
>>回到总目录<< 文章目录 论基于构件的软件开发范文摘要正文论基于构件的软件开发 软件系统的复杂性不断增长、软件人员的频繁流动和软件行业的激烈竞争迫使软件企业提高软件质量、积累和固化知识财富,并尽可能地缩短软件产品的开发周期。 集软件复用、分布式对…...
spring-integration-redis中分布式锁RedisLockRegistry的使用
pom依赖:<!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.integ…...
城市通电(prim算法)
acwing3728 蓝桥杯集训每日一题 平面上遍布着 n 座城市,编号 1∼n。 第 i 座城市的位置坐标为 (xi,yi) 不同城市的位置有可能重合。 现在要通过建立发电站和搭建电线的方式给每座城市都通电。 一个城市如果建有发电站,或者通过电线直接或间接的与建…...
【动态规划】
动态规划1引言题目509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯小结53. 最大子数组和结语引言 蓝桥杯快开始了啊,自从报名后还没认真学过算法有(>﹏<)′,临时抱一下佛脚,一起学学算法。 题目 509. 斐波那契数 斐波那契数 &am…...
秒懂算法 | DP概述和常见DP面试题
动态(DP)是一种算法技术,它将大问题分解为更简单的子问题,对整体问题的最优解决方案取决于子问题的最优解决方案。本篇内容介绍了DP的概念和基本操作;DP的设计、方程推导、记忆化编码、递推编码、滚动数组以及常见的DP面试题。 01、DP概述 1. DP问题的特征 下面以斐波那…...
【C++提高编程】C++全栈体系(二十五)
C提高编程 第四章 STL- 函数对象 一、函数对象 1. 函数对象概念 概念: 重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类&…...
【云原生】k8s核心技术—集群安全机制 Ingress Helm 持久化存储-20230222
文章目录一、k8s集群安全机制1. 概述2. RBAC——基于角色的访问控制二、Ingress三、Helm1. 引入2. 使用功能Helm可以解决哪些问题3. 介绍4. 3个重要概念5. helm 版本变化6. helm安装及配置仓库7. 使用helm快速部署应用8. 自己创建chart9. 实现yaml高效复用四、持久化存储1.nfs—…...
【Linux】实现简易的Shell命令行解释器
大家好我是沐曦希💕 文章目录一、前言二、准备工作1.输出提示符2.输入和获取命令3.shell运行原理4.内建命令5.替换三、整体代码一、前言 前面学到了进程创建,进程终止,进程等待,进程替换,那么通过这些来制作一个简易的…...
再获认可!腾讯安全NDR获Forrester权威推荐
近日,国际权威研究机构Forrester发布最新研究报告《The Network Analysis And Visibility Landscape, Q1 2023》(以下简称“NAV报告”),从网络分析和可视化(NAV)厂商规模、产品功能、市场占有率及重点案例等…...
代码审计之旅之百家CMS
前言 之前审计的CMS大多是利用工具,即Seay昆仑镜联动扫描出漏洞点,而后进行审计。感觉自己的能力仍与零无异,因此本次审计CMS绝大多数使用手动探测,即通过搜索危险函数的方式进行漏洞寻找,以此来提升审计能力…...
ONLYOFFICE中利用chatGPT帮助我们策划一场生日派对
近日,人工智能chatGPT聊天机器人爆火,在去年年底发布后,仅仅两个月就吸引了全球近一亿的用户,成为史上最快的应用消费程序,chatGPT拥有强大的学习和交互能力 可以被学生,教师,上班族各种职业运…...
Java面试题-线程(一)
在典型的 Java 面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程,如何创建线程,用什么方式创建线程比较好(比如:继承 thread 类还是调用 Runnable 接口),…...
一篇普通的bug日志——bug的尽头是next吗?
文章目录[bug 1] TypeError: method object is not subscriptable[bug 2] TypeError: unsupported format string passed to numpy.ndarray.__format__[bug 3] ValueError:Hint: Expected dtype() paddle::experimental::CppTypeToDataType<T>::Type()[bug 4] CondaSSLE…...
Vue 3 第八章:Watch侦听器
文章目录Watch侦听器1. 基础概念1.1. Watch的基本用法例子1:监听单个ref的值,直接监听例子2:监听多个ref的值,采用数组形式例子3:深度监听例子4:监听reactive响应式对象单一属性,采用回调函数的…...
注册表CLSID权限控制技术:通过权限管理实现IDM永久试用
注册表CLSID权限控制技术:通过权限管理实现IDM永久试用 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 问题引入:IDM试用期管理的技术困境…...
安全第一:OpenClaw+GLM-4.7-Flash的本地化数据处理方案
安全第一:OpenClawGLM-4.7-Flash的本地化数据处理方案 1. 为什么我们需要本地化AI解决方案 上个月我帮一位律师朋友处理合同审查任务时,遇到了一个棘手问题——他需要分析上百份涉及商业机密的文件,但担心使用云端AI服务会导致数据泄露。这…...
LFM2.5-1.2B-Thinking-GGUF基础教程:单页Web界面交互逻辑与后处理机制
LFM2.5-1.2B-Thinking-GGUF基础教程:单页Web界面交互逻辑与后处理机制 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。这个镜像采用内置GGUF模型文件和llama.cpp运行时,提供了…...
VMware虚拟机中SenseVoice-Small开发环境快速搭建
VMware虚拟机中SenseVoice-Small开发环境快速搭建 1. 引言 语音识别技术正在快速发展,而SenseVoice-Small作为一个高效的多语言语音识别模型,为开发者提供了强大的工具。但在实际开发中,我们经常需要一个隔离的环境来测试和部署模型&#x…...
STM32模拟Linux内核自动初始化机制实现
STM32模拟Linux内核自动初始化机制实现1. 项目概述1.1 技术背景在传统嵌入式开发中,程序通常按照顺序逻辑执行,当系统复杂度增加时会导致代码臃肿、模块耦合紧密。Linux内核通过initcall机制实现了模块化初始化,本项目在STM32平台上模拟实现了…...
Zotero Style插件:如何通过3个核心功能让文献管理效率提升200%?
Zotero Style插件:如何通过3个核心功能让文献管理效率提升200%? 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员…...
RPA-Python与pytest-microsoftgraph-python-sdk集成:pytest-microsoftgraph-python-sdk测试自动化
RPA-Python与pytest-microsoftgraph-python-sdk集成:pytest-microsoftgraph-python-sdk测试自动化 【免费下载链接】RPA-Python Python package for doing RPA 项目地址: https://gitcode.com/gh_mirrors/rp/RPA-Python RPA-Python是一款强大的Python RPA工具…...
Pixel Fashion Atelier实战教程:从零构建像素时装生成API服务
Pixel Fashion Atelier实战教程:从零构建像素时装生成API服务 1. 项目介绍与核心价值 Pixel Fashion Atelier(像素时装锻造坊)是一款专为时尚设计师和像素艺术爱好者打造的AI图像生成工具。它基于Stable Diffusion和Anything-v5模型&#x…...
手把手调试Android触摸反馈:用Systrace和日志追踪小圆点显示的全过程
Android触摸反馈调试实战:从Systrace到Logcat的全链路追踪 在移动应用开发中,触摸反馈的准确性和即时性直接影响用户体验。当用户手指接触屏幕时,那个跟随指尖跳动的小圆点看似简单,背后却隐藏着复杂的系统级交互。本文将带你深入…...
WarcraftHelper:魔兽争霸3现代兼容性解决方案,让你的经典游戏焕发新生
WarcraftHelper:魔兽争霸3现代兼容性解决方案,让你的经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸…...
