[Leetcode] Regular Expression Matching (Java)
来源:互联网 发布:java递归计算n的阶乘 编辑:程序博客网 时间:2024/05/16 10:06
Implement regular expression matching with support for '.'
and '*'
.
'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string (not partial).The function prototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → true
1)p 0位要考虑的情况有点儿多
2)p 1位
3)p的第二位不为‘*’,则s位数要大于1,s第一位==p第一位或p第一位为‘.’,之后继续比较后面
4)p第二位为‘*’,则考虑几种情况:
a)s= abbbbbc ,p= ab*c
b)s=abcabcab ,p= a.*c.*b等
都要迭代比较
public class RegularExpressionMatching {public boolean isMatch(String s, String p) {if(p.length()==0)return s.length()==0;if(p.length()==1) return s.length()==1&&(p.charAt(0)==s.charAt(0)||(p.charAt(0)=='.'&&s.length()!=0));else if(p.charAt(1)!='*')return (s.length()>0)&&(s.charAt(0)==p.charAt(0)||(p.charAt(0)=='.'&&s.length()!=0))&&isMatch(s.substring(1), p.substring(1));int sIndex = 0;int pIndex = 0;while (sIndex<s.length()&&pIndex<p.length()&&(s.charAt(sIndex)==p.charAt(pIndex)||(p.charAt(pIndex)=='.'&&s.length()!=0))) {if(isMatch(s.substring(sIndex), p.substring(pIndex+2)))return true;sIndex++;}return isMatch(s.substring(sIndex), p.substring(pIndex+2));}public static void main(String[] args) {String s = "ab";String p = ".bab";System.out.println(new RegularExpressionMatching().isMatch(s, p));}}
0 0
- [Leetcode] Regular Expression Matching (Java)
- Regular Expression Matching Leetcode Java
- [LeetCode][Java] Regular Expression Matching
- LeetCode : Regular Expression Matching [java]
- leetcode Regular Expression Matching(Java)
- LeetCode: Regular Expression Matching
- LeetCode: Regular Expression Matching
- leetcode Regular Expression Matching
- [Leetcode] Regular Expression Matching
- [LeetCode]Regular Expression Matching
- LeetCode-Regular Expression Matching
- Regular Expression Matching LeetCode
- LeetCode | Regular Expression Matching
- LeetCode: Regular Expression Matching
- Leetcode: Regular Expression Matching
- [LeetCode] Regular Expression matching
- [LeetCode] Regular Expression Matching
- LeetCode Regular Expression Matching
- 如何美化界面(MFC)
- 流年暗换,逝去的光阴旖旎不复
- (转) Spark 集群模式概述
- 有关导航GPS定位精度的一些猜想
- 紫陌红尘中为什么偏偏有你
- [Leetcode] Regular Expression Matching (Java)
- 绘制矩形并设置阴影
- GetSize与cvSize的区别
- 背景建模算法(一)-------颜色背景模型
- k-d tree算法【转】
- k-d tree的优化查找算法BBF 【转】
- k-d tree代码解析 【转】
- 基于OpenCV库的Gabor滤波器的实现
- view的几种布局方式及实践