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

字符串正则匹配(递归/DP)

时间:2019-03-08 23:53:07      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:包括   ++   正则匹配   amp   pre   while   color   字符   i++   

Wildcard-Matching &  Regular Expression Matching

Wildcard-Matching中?匹配任意一个字符,*匹配任意长度字符串包括空字符串

方法一:记录*的位置,分别考虑*匹配空,匹配一个,匹配两个,三个...

 1     bool isMatch(const char *s, const char *p) {
 2         int sStar=-1,pStar=-1;
 3         int i=0,j=0;
 4         for(i=0;i<strlen(s);)//不考虑p字符串长 s=‘‘aa‘‘, p=‘‘a‘‘
 5         {
 6             if(p[j]==*)
 7             {
 8                 sStar=i;
 9                 pStar=j;
10                 j++;
11             }
12             else if(p[j]==s[i]||p[j]==?)
13             {
14                 i++;
15                 j++;
16             }
17             else if(sStar>=0)//没有匹配但之前记录sStar了
18             {
19                 i = ++sStar;
20                 j = pStar+1;
21             }
22             else return false;
23         }
24         while(p[j]==*)j++;
25         return j==strlen(p);
26     }

方法二:DP dp[i][j]=1表示s[0:i]与p[0:j]匹配

字符串正则匹配(递归/DP)

标签:包括   ++   正则匹配   amp   pre   while   color   字符   i++   

原文地址:https://www.cnblogs.com/demian/p/10498659.html

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