Valid Number(使用DFA,有图)
来源:互联网 发布:sister组合shake it 编辑:程序博客网 时间:2024/05/24 05:20
Validate if a given string is numeric.It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
解题分析
好久好久没有用DFA了,才发现很多学过的东西真的很有用。这道题就可以用DFA来解决。先上图,然后对图进行一下分析。
q1是初始状态;
q2是个过渡状态,代表符号;
q3是个终止状态,表示不包含的小数点‘.’,只包含符号和纯数字的数;
q4是个过渡状态,代表包含符号和小数点的状态;
q5是个终止状态,代表不包含科学计数法的数;
q6是个过渡状态,代表接受e的状态;
q7是个过渡状态,代表接受e后,科学计数法包含符号的状态;
q8是个终止状态,代表包含所有合法符号的状态。
Accept代码
class Solution {public: bool isNumber(string s) { int state=1; for(auto c:s){ switch (state){ case 1: if(c==' ') state=1; else if(c=='+'||c=='-') state=2; else if(isdigit(c)) state=3; else if(c=='.') state=4; else return false; break; case 2: if(isdigit(c)) state=3; else if(c=='.') state=4; else return false; break; case 3: if(isdigit(c)) state=3; else if(c=='e'||c=='E') state=6; else if(c=='.') state=5; else if(c==' ') state=9; else return false; break; case 4: if(isdigit(c)) state=5; else return false; break; case 5: if(isdigit(c)) state=5; else if(c=='e'||c=='E') state=6; else if(c==' ') state=9; else return false; break; case 6: if(c=='+'||c=='-') state=7; else if(isdigit(c)) state=8; else return false; break; case 7: if(isdigit(c)) state=8; else return false; break; case 8: if(isdigit(c)) state=8; else if(c==' ') state=9; else return false; break; case 9: if(c==' ') state=9; else return false; break; } } return state==3||state==5||state==8||state==9; }};
0 0
- Valid Number(使用DFA,有图)
- LeetCode65——Valid Number(使用DFA)来判断字符串是否为数字
- 65 - Valid Number(DFA-Deterministic Finite Automaton)
- Leetcode 65 Valid Number DFA有限状态机
- Valid Number(LeetCode)
- [LeetCode] Valid Number 使用有限状态机
- LeetCode(65) Valid Number
- leetcode_c++:Valid Number(065)
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- leetcode【第九周】矩阵元素置零
- Lucene创建索引(一)
- 问题记录
- 被遗忘的 rmi
- 第3章~第4章
- Valid Number(使用DFA,有图)
- 视觉里程计问题的公式推导
- 文件导出
- java热修复实例
- JSP第二章
- LightOJ-1248-Dice (III) (数学期望)
- Win7使用Maven进行项目管理
- 记录【1】
- Android图片加载框架最全解析(一),Glide的基本用法