<10>——Regular Expression Matching
来源:互联网 发布:淘宝怎么卖二手手机 编辑:程序博客网 时间:2024/06/11 23:12
10、Regular Expression Matching
正则表达式匹配
实现支持'.'和'*'的正则表达式匹配。
'.'匹配任意一个字母。
'*'匹配零个或者多个前面的元素。
匹配应该覆盖整个输入字符串,而不仅仅是一部分。
样例isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true
代码:
class Solution {public: bool isMatch(string s,string p,int s_st,int p_st) { if(p_st==p.length())//有可能出现(a,aa*)的情况,所以先匹配p的长度 return s_st==s.length(); if(p[p_st+1]!='*')//下一元素不是* { if((s[s_st]!='\0'&&p[p_st]=='.')||s[s_st]==p[p_st]) return isMatch(s,p,s_st+1,p_st+1); return false; } while((s[s_st]!='\0'&&p[p_st]=='.')||s[s_st]==p[p_st]) {//出现‘*’的情况 if(isMatch(s,p,s_st,p_st+2))return true;//跳过‘?*’查找 s_st++;//不匹配则s后移,继续比对 }//s_st++递增会影响非‘*'情况的匹配,所以‘*’情况应该后写 return isMatch(s,p,s_st,p_st+2);//(aab,c*a*b)情况,直接跳过c* } bool isMatch(string s, string p) { return isMatch(s,p,0,0); } };
阅读全文
0 0
- <10>——Regular Expression Matching
- 10、Regular Expression Matching
- 10,Regular Expression Matching
- 10Regular Expression Matching
- 10 Regular Expression Matching
- 10、Regular Expression Matching
- 10Regular Expression Matching
- 【10】Regular Expression Matching
- 10-Regular Expression Matching
- LeetCode题解——10Regular Expression Matching
- leetcode第10题——***Regular Expression Matching
- 算法w2——Regular Expression Matching(leetcode 10)
- Leetcode——44Wildcard Matching && 10 Regular Expression Matchi
- 刷LeetCode(10)——Regular Expression Matching
- LeetCode —— Regular Expression Matching
- LeetCode——Regular Expression Matching
- LeetCodeOJ——10. Regular Expression Matching
- LeetCode——Regular Expression Matching
- ARM常用概念与FAQ
- 【拼多多笔试题】小熊战斗力
- linux上安装nginx,启动及停止
- 1.LINUX基本命令02
- 【CS 2833】奇怪的梦境(拓扑排序top_sort)
- <10>——Regular Expression Matching
- dubbo系统学习(一)-dubbo入门实例
- 51nod 1270 数组的最大代价
- 【JavaScript】找出数组中两数之和为指定值的所有整数对
- 路由的优化
- java >; 转义成 >
- bzoj 4033(树形dp)(背包dp)
- 深入理解Java之线程池
- 下拉刷新上拉加载更多