问题描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、“±5”、"-1E-16"及"12e+5.4"都不是。
题目链接

思路

根据输入字符串是什么,来确定下一步走到哪里。初始状态为0。方框代表可以接受的状态,也就是最后要判断是否处在2,3,5,8,9这几个状态。

根据图列出这个表格以后,如果走到-1就要返回false,然后最后判断结尾字符是否是合法状态即可。

代码

class Solution {public boolean isNumber(String s) {int[][] transtable = new int[][]{{1,2,7,-1,-1,0},{-1,2,7,-1,-1,-1},{-1,2,3,4,-1,9},{-1,3,-1,4,-1,9},{6,5,-1,-1,-1,-1},{-1,5,-1,-1,-1,9},{-1,5,-1,-1,-1,-1},{-1,8,-1,-1,-1,-1},{-1,8,-1,4,-1,9},{-1,-1,-1,-1,-1,9}};int state = 0;char[] ss = s.toCharArray();for(int i = 0; i < ss.length; i++){int id = make(ss[i]);if(id == -1) return false;state = transtable[state][id];if(state == -1) return false;}return state == 2 || state == 3 || state == 5 || state == 8 || state == 9;}//把输入的字符转换成列数public int make(char c){switch(c){case '+' : case '-' : return 0;case '.' : return 2;case 'e' : case 'E' : return 3;case ' ' : return 5;default:if(c >= 48 && c <= 57) return 1;}return -1;}
}

【数据结构】有限状态自动机(FSA)的理解-LeetCode表示数值的字符串(有效数字)题解(Java)相关推荐

  1. 【LeetCode笔记】415. 字符串相加(Java、字符串)

    题目描述 不能直接把字符串转换成整数(会溢出) 面试被问过,今天刷面经又刷到..那就索性水一篇文吧! 更新:原题就是 leetcode 415 思路 & 代码 只要理好字符串s.字符串t.答案 ...

  2. LeetCode 222. Count Complete Tree Nodes 题解——Java

    题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思路:首先想到 ...

  3. 【LeetCode笔记】394. 字符串解码(Java、递归、栈)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 开心!!独立思考字符串题,还AC了,成就感满满 XD 难点应该是在于嵌套括号,那么这里实际上还要考虑到一个类似于括号匹配的事情 谈到括号, ...

  4. 第十二篇:形式语言理论与有限状态自动机

    目录 我们到目前已经介绍了什么? 形式语言理论 为什么要去做这个事情 ? 例子 超越会员问题-- 大纲 常规语言/正则语言 例子重现 正则语言的特性 有限状态接受器 样例 派生形态学 形态学 FSA ...

  5. 从零写一个编译器(四):语法分析之构造有限状态自动机

    项目的完整代码在 C2j-Compiler 通过上一篇对几个构造自动机的基础数据结构的描述,现在就可以正式来构造有限状态自动机 我们先用一个小一点的语法推导式来描述这个过程 s -> e e - ...

  6. 有限状态自动机java实现_用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机...

    阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: 上一节,我们通过代码,实现了一个有限状态自动机,并将其应用于对整形和浮点数的识别.构造有限状态自动机,并驱动它,从而实现 ...

  7. 一.正则表达式转换为有限状态自动机:正则表达式转NFA

    原文:https://study.163.com/course/courseMain.htm?courseId=1002830012 一.有限状态自动机的分类 有限状态自动机,其实可以分成两类.第一类 ...

  8. 用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机

    阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=10028300 ...

  9. 有限状态自动机java实现_有限状态机FSM的几种简单实现

    标签: 有限状态机,Akka fsm,squirrel-foundation,java状态模式.责任链模式 1. 有限状态机的概念 有限状态机(英语:finite-state machine,缩写:F ...

  10. 【Codeforces 506E】Mr.Kitayuta’s Gift【BZOJ 4214】黄昏下的礼物 dp转有限状态自动机+矩阵乘法优化...

    神题-- 胡乱讲述一下思维过程-- 首先,读懂题. 然后,转化问题为构造一个长度为|T|+n的字符串,使其内含有T这个子序列. 之后,想到一个简单的dp.由于是回文串,我们就增量构造半个回文串,设f( ...

最新文章

  1. c语言表达式3178的值为,【C语言】C语言运算符
  2. MPB:中科院深圳先进院戴磊组小鼠粪便样本中16S拷贝数的定量检测
  3. java --级联操作(查询/更新)
  4. python交互界面的退出
  5. linux tomcat 配置启动命令,# linux 之 配置tomcat开机自启动(systemctl)
  6. 数据结构之堆Heap
  7. 阶跃函数卷积自己_如何看待大神/老师说“阶跃响应曲线调参并不准确”的观点?...
  8. VS2010 C++ 创建COM组件
  9. 字节跳动研发的云固件投入应用 首批装机200余台X86服务器
  10. IDEA使用PlantUML构建类图,时序图等
  11. MariaDB数据库介绍之一、备份(mysqldump、lvm2快照、xtrabackup)
  12. PHP程序显示时出现乱码
  13. 正向代理 smtp imap_Nginx代理模式及区别
  14. Swift 5 用TableView实现动态Excel表格Spreadsheet
  15. win10计算机优化技巧,教你win10优化技巧
  16. Protobuf编码规则详解
  17. 手动决战3721和雅虎助手
  18. 如何打造一个自动化的前端项目
  19. love2d贪吃蛇---蛇
  20. bmp180气压传感器工作原理_40张动图看懂各种传感器工作原理

热门文章

  1. pose_subscriber.cpp
  2. vue实现搜索框记录搜索历史_vue项目搜索历史功能的实现
  3. 笔记:torch的基本运算
  4. 1079: PIPI的存钱罐
  5. 计算二叉树中各结点的最大元素的值
  6. 彻悟人生555句金玉良言
  7. android 多个sdcard路径,Android中访问sdcard路径的几种方式
  8. 计算机网络技术文档心得,计算机网络技术学习心得体会.docx
  9. 大数据之Redis:Redis之一主二仆模式
  10. 蓝桥杯最后的冲刺篇(JAVA)