【数据结构】有限状态自动机(FSA)的理解-LeetCode表示数值的字符串(有效数字)题解(Java)
问题描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+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)相关推荐
- 【LeetCode笔记】415. 字符串相加(Java、字符串)
题目描述 不能直接把字符串转换成整数(会溢出) 面试被问过,今天刷面经又刷到..那就索性水一篇文吧! 更新:原题就是 leetcode 415 思路 & 代码 只要理好字符串s.字符串t.答案 ...
- LeetCode 222. Count Complete Tree Nodes 题解——Java
题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思路:首先想到 ...
- 【LeetCode笔记】394. 字符串解码(Java、递归、栈)
文章目录 题目描述 思路 & 代码 更新版 题目描述 开心!!独立思考字符串题,还AC了,成就感满满 XD 难点应该是在于嵌套括号,那么这里实际上还要考虑到一个类似于括号匹配的事情 谈到括号, ...
- 第十二篇:形式语言理论与有限状态自动机
目录 我们到目前已经介绍了什么? 形式语言理论 为什么要去做这个事情 ? 例子 超越会员问题-- 大纲 常规语言/正则语言 例子重现 正则语言的特性 有限状态接受器 样例 派生形态学 形态学 FSA ...
- 从零写一个编译器(四):语法分析之构造有限状态自动机
项目的完整代码在 C2j-Compiler 通过上一篇对几个构造自动机的基础数据结构的描述,现在就可以正式来构造有限状态自动机 我们先用一个小一点的语法推导式来描述这个过程 s -> e e - ...
- 有限状态自动机java实现_用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机...
阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: 上一节,我们通过代码,实现了一个有限状态自动机,并将其应用于对整形和浮点数的识别.构造有限状态自动机,并驱动它,从而实现 ...
- 一.正则表达式转换为有限状态自动机:正则表达式转NFA
原文:https://study.163.com/course/courseMain.htm?courseId=1002830012 一.有限状态自动机的分类 有限状态自动机,其实可以分成两类.第一类 ...
- 用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机
阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=10028300 ...
- 有限状态自动机java实现_有限状态机FSM的几种简单实现
标签: 有限状态机,Akka fsm,squirrel-foundation,java状态模式.责任链模式 1. 有限状态机的概念 有限状态机(英语:finite-state machine,缩写:F ...
- 【Codeforces 506E】Mr.Kitayuta’s Gift【BZOJ 4214】黄昏下的礼物 dp转有限状态自动机+矩阵乘法优化...
神题-- 胡乱讲述一下思维过程-- 首先,读懂题. 然后,转化问题为构造一个长度为|T|+n的字符串,使其内含有T这个子序列. 之后,想到一个简单的dp.由于是回文串,我们就增量构造半个回文串,设f( ...
最新文章
- c语言表达式3178的值为,【C语言】C语言运算符
- MPB:中科院深圳先进院戴磊组小鼠粪便样本中16S拷贝数的定量检测
- java --级联操作(查询/更新)
- python交互界面的退出
- linux tomcat 配置启动命令,# linux 之 配置tomcat开机自启动(systemctl)
- 数据结构之堆Heap
- 阶跃函数卷积自己_如何看待大神/老师说“阶跃响应曲线调参并不准确”的观点?...
- VS2010 C++ 创建COM组件
- 字节跳动研发的云固件投入应用 首批装机200余台X86服务器
- IDEA使用PlantUML构建类图,时序图等
- MariaDB数据库介绍之一、备份(mysqldump、lvm2快照、xtrabackup)
- PHP程序显示时出现乱码
- 正向代理 smtp imap_Nginx代理模式及区别
- Swift 5 用TableView实现动态Excel表格Spreadsheet
- win10计算机优化技巧,教你win10优化技巧
- Protobuf编码规则详解
- 手动决战3721和雅虎助手
- 如何打造一个自动化的前端项目
- love2d贪吃蛇---蛇
- bmp180气压传感器工作原理_40张动图看懂各种传感器工作原理