首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Leetcode】65. 有效数字

【Leetcode】65. 有效数字

作者头像
Leetcode名企之路
发布于 2018-10-09 04:01:00
发布于 2018-10-09 04:01:00
60200
代码可运行
举报
文章被收录于专栏:Leetcode名企之路Leetcode名企之路
运行总次数:0
代码可运行

题目

验证给定的字符串是否为数字。

例如: "0" => true " 0.1 " => true "abc" => false "1 a" => false "2e10" => true

说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。

题解

这其实就是一个自动状态机的问题

  1. 状态转换图

状态转换图

  1. 两个标志位
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
boolean numBeforeE = false;
boolean numAfterE  = false;
  1. 最终状态

numBeforeE && Arrays.asList(2, 3, 4).contains(state) || numBeforeE && numAfterE;

java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public boolean isNumber(String s) {
        s = s.trim().toLowerCase();
        // use a flag for deciding on dot
        boolean numBeforeE = false;
        boolean numAfterE = false;
        int state = 0;
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (Character.isDigit(ch)) {
                // state transition
                if (state <= 2) state = 2;
                else if (state <= 4) state = 4;
                else if (state <= 7) state = 7;
                else return false;
                // update num flag
                if (state <= 4) numBeforeE = true;
                if (state > 4) numAfterE = true;
            } else if (ch == '+' || ch == '-') {
                // state transition
                if (state == 0 || state == 5) state++;
                else return false;
            } else if (ch == '.') {
                if (state <= 2) state = 3;
                else return false;
            } else if (ch == 'e') {
                if (2 <= state && state <= 4) state = 5;
                else return false;
            } else {
                return false;
            }
        }
        return numBeforeE && Arrays.asList(2, 3, 4).contains(state) || numBeforeE && numAfterE;
    }

相关阅读

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Leetcode名企之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 65. 有效数字(逻辑题,难)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2020/07/13
5890
【LeetCode困难题不过如此】65.有效数字
一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 小数(按顺序)可以分成以下几个部分:
公众号guangcity
2021/07/09
3210
C#版 - Leetcode 65. 有效数字 - 题解
在线提交: Leetcode https://leetcode.com/problems/valid-number/
Enjoy233
2019/03/05
7000
【剑指 の 精选】热门字符串模拟
这是 LeetCode 上的「剑指 Offer 20. 表示数值的字符串」,难度为「中等」。
宫水三叶的刷题日记
2023/09/07
2350
【剑指 の 精选】热门字符串模拟
☆打卡算法☆LeetCode 65、有效数字 算法解析
链接:65. 有效数字 - 力扣(LeetCode) (leetcode-cn.com)
恬静的小魔龙
2022/08/07
4390
☆打卡算法☆LeetCode 65、有效数字  算法解析
算法细节系列(33):再见字符串(1)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/73123053
用户1147447
2019/05/26
6690
Leetcode No.65 有效数字(有限状态自动机)
有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 小数(按顺序)可以分成以下几个部分:
week
2022/01/06
5730
Leetcode No.65 有效数字(有限状态自动机)
LeetCode - #65 有效数字
我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。
Swift社区
2022/12/10
4010
Baozi Training Leetcode solution 772: Basic Calculator III
Implement a basic calculator to evaluate a simple expression string.
包子面试培训
2019/08/27
5980
Baozi Training Leetcode solution 772: Basic Calculator III
【Leetcode】64. 最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
Leetcode名企之路
2018/10/09
9620
【Leetcode】64. 最小路径和
java判断是否为数字
isDigit() 方法用于判断指定字符是否为数字。如果字符为数字,则返回 true;否则返回 false。
Java架构师必看
2021/12/21
17.3K0
LeetCode 题目解答——Easy 部分
[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。
四火
2022/07/19
5860
LeetCode 题目解答——Easy 部分
搞定大厂算法面试之leetcode精讲20.字符串
方法1.截取字符串,循环字符串,遇到#就截掉最后一个字符,循环完毕之后,最后比较两个去除掉#退格之后的字符串是否相等,时间复杂度O(m+n),m、n是两个字符串的长度。空间复杂度O(1)
全栈潇晨
2021/12/04
7270
前端的设计模式系列-责任链模式
代码也写了几年了,设计模式处于看了忘,忘了看的状态,最近对设计模式有了点感觉,索性就再学习总结下吧。
windliang
2022/08/20
4540
前端的设计模式系列-责任链模式
Leetcode 65 Valid Number DFA有限状态机
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 impl
triplebee
2018/01/12
1.1K0
Valid Number
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117727.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
2900
萌新刷题(十一)有效数字
题目 给定一个字符串,验证其是否为数字。 样例 "0" => true " 0.1 " => true "abc" => false "1 a" => false "2e10" => true 思路 看起来很简单,仔细一分析妈的好难。 在网上学习一些大神的思路,使用DFA来解题。 DFA是什么 DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,
小歪
2018/04/04
1.1K0
萌新刷题(十一)有效数字
【算法题解】 Day15 栈
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。
sidiot
2023/08/26
1820
【算法题解】 Day15 栈
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值
思路:这个题挺简单的。虽然是困难难度,但是类似的我做过,就是各种字符串分情况处理。用一个flag记录+还是-。然后括号里的先计算。大概思路就这样,我直接去敲代码试试了。
大发明家
2021/12/15
2.1K0
脚撕LeetCode(937)Easy
题目地址:https://leetcode-cn.com/problems/reorder-data-in-log-files/
JathonKatu
2021/07/14
2510
相关推荐
LeetCode 65. 有效数字(逻辑题,难)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验