码迷,mamicode.com
首页 > 其他好文 > 详细

DFA

时间:2015-09-16 14:05:16      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

https://leetcode.com/problems/valid-number/

 1 class Solution {
 2 public:
 3     bool isNumber(string s) {
 4         while(!s.empty() && s[0] ==  ) {
 5             s.erase(s.begin());
 6         }
 7         while (!s.empty() && s[s.size() - 1] ==  ) {
 8             s.erase(s.end() - 1);
 9         }
10         if(s.empty())
11             return false;
12         int state = 0;
13         for(int i = 0; i < s.size(); i++) {
14             if(s[i] == - || s[i] == +) {
15                 if(state == 0 || state == 3) {
16                     state ++;
17                 } else {
18                     return false;
19                 }
20             } else if(s[i] == .) {
21                 if( state == 2) {
22                     state = 7;
23                 } else if(state == 0 || state == 1) {
24                     state = 6;
25                 } else {
26                     return false;
27                 }
28             } else if(s[i] >= 0 && s[i] <= 9) {
29                 if(state == 1 || state == 4 || state == 6) {
30                     state ++;
31                 } else if(state == 0 || state == 3) {
32                     state = state + 2;
33                 }
34             } else if(s[i] == e || s[i] == E) {
35                 if(state == 2 ||  state == 7) {
36                     state = 3;
37                 } else {
38                     return false;
39                 }
40             } else {
41                 return false;
42             }
43         }
44         if(state == 2 || state == 7 || state == 5)
45             return true;
46         return false;
47     }
48 };

 

状态转化图

 

技术分享

DFA

标签:

原文地址:http://www.cnblogs.com/daijkstra/p/4813147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!