Leetcode 10. Regular Expression Matching
来源:互联网 发布:张鲁 三国杀淘宝 编辑:程序博客网 时间:2024/06/01 07:38
class Solution {public: bool isMatch(string s, string p) { if(p.empty())return s.empty(); bool T[p.size()+1][s.size()+1]; for(int i=0;i<=p.size();i++){ for(int j=0;j<=s.size();j++){ T[i][j]=false; } } T[0][0]=true; for(int i=0;i<=p.size();++i){ for(int j=0;j<=s.size();++j){ if(T[i][j]==false)continue; else if(i+1<=p.size()&&j+1<=s.size()&&((s[s.size()-j-1]==p[p.size()-1-i])||p[p.size()-1-i]=='.')){ T[i+1][j+1]=true; } else if(i+2<=p.size()&&p[p.size()-1-i]=='*'){ T[i+2][j]=true; int k=1; while(j+k<=s.size()&&((s[s.size()-j-k]==p[p.size()-i-2])||(p[p.size()-i-2]=='.'))){ T[i+2][j+k]=true; k++; } } } } return T[p.size()][s.size()]; }};
正则表达式匹配,首先做个分析,以s为abcdef,p为abc*为例。做出图所示,当我发现以p为二维数组的横坐标时,对于for循环嵌套的情况下,前一个状态的false并不能影响下一个状态,因此换做以s为横坐标,可以轻松发现,当前一个状态为false时,后一个状态肯定为false。。随后,对'*'这个符号进行判断,最初发现相当头疼,因为从字符串最左到最右考虑时,t[i][j]似乎要考虑到前面2个状态的情况,当时没想明白,觉得似乎不大好做(事后发现有合适的解法),因此在我的代码里,t[i][j]表示的是从字符串右边往左看,I个长度的p串和j个长度的s串的比较。这么看代码,逻辑就很清晰了
0 0
- [LeetCode]10.Regular Expression Matching
- LeetCode --- 10. Regular Expression Matching
- [Leetcode] 10. Regular Expression Matching
- [LeetCode]10.Regular Expression Matching
- [leetcode] 10.Regular Expression Matching
- Leetcode-10.Regular Expression Matching
- leetcode 10. Regular Expression Matching
- leetcode 10. Regular Expression Matching
- Leetcode 10. Regular Expression Matching
- leetcode 10. Regular Expression Matching
- Leetcode 10. Regular Expression Matching
- leetcode 10. Regular Expression Matching
- LeetCode-10. Regular Expression Matching
- leetcode.10. Regular Expression Matching
- LeetCode 10. Regular Expression Matching
- leetcode 10. Regular Expression Matching
- Leetcode-10. Regular Expression Matching
- 【leetcode】10. Regular Expression Matching
- HTTP服务器工作原理
- H5项目常见问题汇总及解决方案
- 读书笔记-《深入理解Java虚拟机》-对象探秘
- cookie和session的区别
- Java笔试题解(1)
- Leetcode 10. Regular Expression Matching
- 使用DDMS中的native heap检查Android native内存泄露
- 关于JS创建对象的几个常见模式
- 扩展知识
- kaldi mono训练(学习查阅博客)
- Python 安全编程学习总结
- Codeforce 558C. Amr and Chemistry &51nod 1483 化学变换 By Assassin 暴力大法好
- URAL 1004 Sightseeing Trip 无向图最小环
- (一)标识符、注释