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

Leetcode 之Regular Expression Matching(31)

时间:2016-05-24 16:52:28      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

正则表达式的匹配,还是挺难的。可根据下一个字符是不是*分为两种情况处理,需要考虑多种情况。

技术分享
bool isMatch(const char *s, const char *p)
      {
          if (*p == \0)return *s == \0;

          //如果下一个不是*(*可表示前一个字符的数量)
          //要么当前字符匹配,要么是.,不可跳过
          if (*(p + 1) != *)
          {
              if (*s == *p || (*p == . && *s != \0))
                  return isMatch(s + 1, p + 1);
              else
                  return false;
          }
          else
          {
              //如果是*,则当前字符匹配|| 有一个为.
              //因为后面是*,即使不完全匹配也没关系,跳过即可
              while (*p == *s || (*p == . && *s != \0))
              {
                  if (isMatch(s, p + 2))
                      return true;
                  s++;
              }
              return isMatch(s, p + 2);
          }
      }
View Code

 

Leetcode 之Regular Expression Matching(31)

标签:

原文地址:http://www.cnblogs.com/573177885qq/p/5523819.html

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