前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Leetcode】65. 有效数字

【Leetcode】65. 有效数字

作者头像
Leetcode名企之路
发布2018-10-09 12:01:00
5810
发布2018-10-09 12:01:00
举报
文章被收录于专栏:Leetcode名企之路

题目

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

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

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

题解

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

  1. 状态转换图

状态转换图

  1. 两个标志位
代码语言:javascript
复制
boolean numBeforeE = false;
boolean numAfterE  = false;
  1. 最终状态

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

java

代码语言:javascript
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 题解
    • java
    • 相关阅读
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档