10. Regular Expression Matching
来源:互联网 发布:怎么看待网络直播 编辑:程序博客网 时间:2024/03/29 22:47
首先将匹配字符分成4个部分
[.] , [.*],[字母+*],[字母]
bool dp[1000][1000];class Solution {public: bool isMatch(string s, string p) { memset(dp,0,sizeof(dp)); int n=s.size(),m=p.size(); vector<string> vec; int i,j; for(i=0;i<m;i++) { string str=""; str+=p[i]; if(p[i]!='*') vec.push_back(str); else vec.back()+=str; } dp[0][0]=1; m=vec.size(); for(i=1;i<=m;i++) { string str=vec[i-1]; if(str.size()==2) dp[i][0]=dp[i-1][0]; for(j=1;j<=n;j++) { if(str==".") { if(dp[i-1][j-1]) dp[i][j]=true; } else if(str.size()==2) { if(str[0]=='.') { if(dp[i-1][j-1]||dp[i-1][j]||dp[i][j-1]) dp[i][j]=true; } else { if(dp[i-1][j]) dp[i][j]=true; else if(str[0]==s[j-1]) { if(dp[i-1][j-1]||dp[i][j-1]) dp[i][j]=1; } } } else { if(dp[i-1][j-1]&&str[0]==s[j-1]) dp[i][j]=true; } } } return dp[m][n]; }};
还可以用递归
class Solution {public: bool isMatch(string s, string p) { if(p[0]=='\0') return p[0]==s[0]; if(p[1]!='*') { if(s[0]==p[0]||(p[0]=='.'&&s[0]!='\0')) return isMatch(s.substr(1),p.substr(1)); else return false; } else { while(s[0]&&(s[0]==p[0]||p[0]=='.')) { if(isMatch(s,p.substr(2))) return true; s=s.substr(1); } return isMatch(s,p.substr(2)); } return false; }};
0 0
- 10. Regular Expression Matching
- 10.Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 用户的iPhone7快到手了!你们的新版本什么时候上线啊!
- AXIS2:如何发布webservice
- 学习网址
- 三种方式YUV420转RGB24/BGR24,实测可用
- 为什么HashSet不能重复以及具体原理源码分析
- 10. Regular Expression Matching
- 修改bug的一个小故事
- Ubuntu12.10下获取PC的实时网速
- Android中TabLayout和ViewPager的结合使用
- Android事件分发机制
- MYSQL 循环嵌套(自定义函数,游标)
- 【已解决】__PHP_Incomplete_Class_Name 问题原因之一
- C++类的初体验封装之构造函数(一)
- 0_MongoDB启动