红桃J

用心写好每行完美的代码,远比写一堆更有价值

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 现在回过头来看这个代码,由于最近编译原理实验课上写了词法分析程序,这两个还是有相似的地方的,词法分析程序我是一层大循环控制eof(),分类的小循环去找标识符,无符号数,分割符等。其实和这个题的思想差不多。

这个题是用递归往下推进,中间匹配*号时用while去尝试,失败再退回,成功则继续。

代码:

 1 class Solution {
 2 public:
 3     bool isMatch(const char *s, const char *p) {
 4         if (*(p) == '\0')
 5         return *(s) == 0;
 6     if (*(p + 1) != '*')
 7     {
 8         if (*(s) == *(p) || *(p) == '.'&&*(s) != '\0')
 9         {
10             return isMatch(s+1, p+1);
11         }
12         else
13             return false;
14     }
15     else
16     {
17         while (*(s) == *(p) || *(p) == '.'&&*(s) != '\0')
18         {
19             if (isMatch(s, p + 2))
20             {
21                 return true;
22             }
23             s++;
24         }
25         return  isMatch(s, p + 2);
26     }
27     }
28 };

 

posted on 2015-03-26 22:17  红桃J  阅读(125)  评论(0编辑  收藏  举报