[Leetcode] 65. Valid Number 解题报告

Leetcode 65 Valid Number DFA有限状态机 用有限状态机DFA解决,将每一位看成一种状态转移条件,每次读取的一位,就根据转移矩阵进行状态转移,若转移到不合法的状态则返回false。 阅读详情

题目:

Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

思路:

这种题目没有什么算法可言,完全考察的是对corner case的考虑是否完全。下面代码在注释中给出了处理各种corner case的情况。其基本思路如下:设置一个索引计数器,判断走到了字符串的哪个位置;再设置一个digit计数器,判断某些部分的digit的个数是否合法。然后就是一步步从前往后走了,一旦遇到非法情况就返回false。等到一直走到末尾的时候还没发现非法情况,就返回true。

代码:

class Solution {
public:
    bool isNumber(string s) {
        int i = 0;                              // the index
        int k = 0;                              // the count for digits
        int len = s.size();
        while (s[i] == ' ') ++i;                // remove prefix ' '
        if (s[i] == '+' || s[i] == '-') ++i;    // tackle the sign part
        while (isdigit(s[i])) ++i, ++k;         // the integer part
        if(s[i] == '.') ++i;                    // the seperator
        while (isdigit(s[i])) ++i, ++k;         // the fraction part
        if (k == 0) return false;               // no digits found
        if (s[i] == 'e' || s[i] == 'E') {       // same as integer part
            ++i, k = 0;
            if(s[i] == '+' || s[i] == '-') ++i;
            while(isdigit(s[i])) ++i, ++k;
            if(k == 0) return false;
        }
        while (s[i] == ' ') ++i;                // remove the suffix
        return i == len;
    }
};
Follow Up:

如果不仅仅是判断合法性,而是要求将一个字符串转换成为一个double类型的数据呢?其实Leetcode上面也有完全类似的题目,可以参考,会发现两者的代码非常类似。不过在面试的时候,最好和面试官讨论各种情况,例如如果溢出呢?其它各种特殊情况如何处理?



FreeRTOS任务调度实战:如何让STM32同时处理温湿度采集、OLED显示和云端通信 本文通过一个基于STM32的物联网终端项目,详细讲解了如何利用FreeRTOS实现多任务调度,同时处理温湿度采集、OLED显示和云端通信。文章深入探讨了任务规划、堆栈分配、信号量与消息队列等核心机制,并重点优化了ESP8266通信任务的非阻塞设计与稳定性,为构建响应迅速、运行可靠的嵌入式系统提供了实战指南。 阅读详情

相关推荐

【PCL】SolidWorks 三维建模 STL, OBJ 采样生成 PCD 点云数据(附源码)

[PCL自学篇] 一.SolidWorks三维建模STL,OBJ采样生成PCD点云数据新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 这阵子做线结构光视觉检测(轨道)项目的过程中,发现之前的许多知识点在逐渐遗忘,常言好记性

idiot5lie的博客 1万+

简谈:java种关于BigDecimal的坑

最近踩了一个坑,关于使用BigDecimal时所产生的问题。 我们知道在我们进行一些货币计算的时候,一般采用BigDecimal的方法来进行运算。而不是通过double和long浮点型进行运算。就是因为Java种double或者long采用的是二进制浮点运算。而二进制不能充分准确的表示出浮点数的。举个例子,当我们用十进制时无法准确的表示1/3一样。只能通过0.3333...无限循环的方式来表示,...

TofuCai的博客 2116

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1570

java字符串包含连续数字,Java中包含数字的排序字符串

小编典典尝试使用此比较器,该比较器将删除所有非数字字符,然后将其余字符与数字进行比较:Collections.sort(strings, new Comparator() {public int compare(String o1, String o2) {return extractInt(o1) - extractInt(o2);}int extractInt(String s) {Strin...

weixin_42355399的博客 425

ElasticSearch集群搭建

docker安装es集群

weixin_46562226的博客 2026

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 527

android 密码设置验证,密码验证的正则表达式的Android

public class Validation {public static void main(String[] args) {String pass = "1AB%CDef555";String username = "manna";String email = "[emailprotected]";System.out.println(validiate2(pass, username,e...

weixin_35698659的博客 524

3A之自动对焦(AF)算法:从Tenegrad到拉普拉斯的清晰度评价实战

本文深入解析自动对焦(AF)算法的核心——清晰度评价函数,通过实战对比Tenegrad、方差、能量梯度、Brenner和拉普拉斯五大经典算法的原理、代码实现与性能。文章详细阐述了各函数在计算速度、抗噪性和单峰性上的优劣,并提供了从仿真测试到硬件部署的优化策略,帮助开发者根据实际场景选择最合适的AF算法。

weixin_29281915的博客 314

[leetcode] 65. Valid Number 解题报告

题目链接:https://leetcode.com/problems/valid-number/ Validate if a given string is numeric. Some examples: "0" => true " 0.1 " => true "abc" => false "1 a" => false "2e10" => true Note:

小榕流光的专栏 1380

华为OD机试真题 新系统2026-04-08 Python&JS 实现【直捣黄龙】

小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施斩首行动。 敌军阵营是一个n*n的矩阵,入口在坐标(0,n/2),敌军司令部在坐标(n-1,n/2),每个哨兵警戒以自己为中心的9宫格,一旦被哨兵发现则行动失败。

MISAYAONE的博客 589

GB 47955—2026 L2组合驾驶辅助强制国标全解、合规方案与工程代码落地

GB 47955—2026 L2辅助驾驶国标合规工程代码# 运行环境:Python3.8+,适配车载仿真、台架测试、算法验证场景# 依赖安装:pip install numpy dataclasses tqdm struct time json# ===================== 国标强制时序参数(完全对标GB 47955—2026) =====================HAND_OFF_FIRST_WARN = 5.0 # 手部脱离5s触发一级预警。

lin_xiu的博客 308

Leetcode 65. Valid Number 验证数字 解题报告

1 解题思想这道题条条框框是在太多了,各种情况。。不过简略来说,正确的做法应该是: 1、熟悉数字的表述规则(可以看网上的,也可以看我代码的),这道题关键是要懂所有的数字规则。 2、对输入的数字首先进行必要的检测,是否有abc或者中间空格等非法字符 3、将e前面和e后面分开计算!2 原题Validate if a given string is numeric.Some examples: “

MebiuW的专栏 5575

趋势跟踪策略

/ 绘制K线图的下跌部分,使用绿色标记 stickline(close>=open,high,close,1,1,colorgreen);end // 在图表上绘制当前趋势的图标,如果trend=1或-1 drawicon(trend=1,stopprice,10);end // 绘制K线图的上涨部分,使用红色标记 stickline(close>=open,high,close,1,1,colorred);

2401_84919512的博客 356

leetcode65 valid number 解题报告

leetcode 65 valid number 解题报告 这道题目实际上很简单,至少我一眼看上去是这样子的,完全和它Hard的难度不相符合。然而这个踩的数量居然高达2k,这让我十分好奇。实际做起来……我认为出题人默认做题者知道两件事情: .的前后可以只有一个数字 0是可以省略的 单看这两条没有什么问题,但是题目自动省略了如下的样例: ”-.8“ true “3.” true “.1” tr...

生息之地 319

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode65 Valid Number 解题报告

Validate if a given string is numeric. Some examples: "0" => true " 0.1 " => true "abc" => false "1 a" => false "2e10" => true Note: It is intended for the problem statement to be ambiguous. You

bemf168的博客 318

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【LeetCode】65. Valid Number 解题报告(Python)

题目分析: 这一题让我们判断一个数是否可转换为数字,开始直接调用python转换为float的函数 + 异常返回(见附),虽然通过了但感觉很过分。这题的本意应该是让我们分为很多情况逐位经过多个判断,我参考了[LeetCode] Valid Number 验证数字,我只是把他的代码转为了python版本,原作者的解析写的非常到位,不再繁叙。 测试代码: #submit class Solution:...

L141210113的专栏 579

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

65 Valid Number

65 Valid Number链接:https://leetcode.com/problems/valid-number/ 问题描述: Validate if a given string is numeric.Some examples: “0” => true ” 0.1 ” => true “abc” => false “1 a” => false “2e10” => true

783

LeetCode65——Valid Number

LeetCode65——Valid Number 这个题目给定的拿督评分是Hard,做了之后发现,它真正Hard的地方不在于这个题目有多难想,而是由多恶心 判断字符串是否是数字,由于题目的示例没有给太多的Sample input,所以很多情况你并不知道是不是数字,这就会影响你的判断, 另外,比如前后导的空格,冗余的加减符号,这些没有给明确说明,很多都是在提交的时候,它告诉你wrong

上善若水 848

Leetcode 65. Valid Number

题目链接 : Leetcode 65. Valid Number 今天状态不好。。。 import java.util.ArrayList; import java.util.List; public class Solution { public static void main(String[] args){ String s = "96 e5"; s=s.t

独钓寒江雪 280

LeetCode65 Valid Number

LeetCode65 Valid Number问题描述 Validate if a given string is numeric. Some examples: “0” => true ” 0.1 ” => true “abc” => false “1 a” => false “2e10” => true Note: It is intended

yanqinghe123的专栏 1128

Leetcode 65. Valid Number 有效数字

Leetcode 65. Valid Number 有效数字 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/valid-number/ 题目描述 验证给定的字符串是否可以解释为十进制数字。 例如: "0" => true " 0.1 " => true "abc" =>&n...

CoderWangSon 295

【LeetCode】65. Valid Number

LeetCode65 传送门 解法: 1. 要设计好问考官的问题。 2. 解法与LeetCode8非常相似,可将问题分为几个组成部分: (1)开头的空格(可有可无) (2)正负号(可有可无) (3)数字 (4)e和e后的数字(可有可无) (5)结尾的空格 推荐解法比我的方法简洁得多,可读性强,但分数却低了一些。原因是我的方法中“一言不合”就返回False,而推荐解法中是保存标志,...

weixin_42344158的博客 209

65. Valid Number-leetcode-java

【原来在SAE的blog上,都转到优快云了。。】 65. Valid Number-leetcode-java 发表于 2016/02/10 题目: Validate if a given string is numeric. Some examples: "0" => true " 0.1 " => true "abc" => false

you are what you read 1724

Leetcode 65 Valid Number

思路: 没啥特别的,就是把可能发生的情况都想一遍。。。这就是我一开始的思路。但是这样必然会少思考很多weird的case。所以这也是我后期疯狂debug的原因。最后的代码也是惨不忍睹,可读性几乎为0。我之所以硬着头皮把这题做出来了,原因很简单,我只是单纯的不想放弃一道题,哪怕再烦,我就当练习敲代码的感觉也好,做一做总归没错的。你看我这一做,就发现自己的逻辑是多么的不严谨,导致疯狂debug,最后的代码可读性为0。下面我直接放我的代码,非常的差,大家看看也就图一乐。 class Solution { .

GoodJobJasper的博客 155

LeetCode //C - 65. Valid Number

【代码】LeetCode //C - 65. Valid Number。

Made in Code 1039
上一篇: [C++] 基础知识之2、C++中的基本数据类型
下一篇: [Leetcode] 66. Plus One 解题报告
魔豆Magicbean
博客等级 码龄19年 146粉丝 742原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值