`
hcx2013
  • 浏览: 88714 次
社区版块
存档分类
最新评论

Regular Expression Matching

 
阅读更多

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") → 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


public class Solution {
    public boolean isMatch(String s, String p) {
    	if (s == null || p == null) {
    		return false;
    	}
        return process(s, p, 0, 0);
    }

	private boolean process(String s, String p, int si, int pi) {
		// TODO Auto-generated method stub
		if (pi == p.length()) {  
			return si == s.length();
		}
		if (pi + 1 == p.length() || p.charAt(pi + 1) != '*') {
			return si != s.length() && (s.charAt(si)==p.charAt(pi) || p.charAt(pi) == '.')
					&& process(s, p, si+1, pi+1);
		}
		while (si != s.length() && (s.charAt(si)==p.charAt(pi) || p.charAt(pi) == '.')) {
			if (process(s, p, si, pi+2)) {
				return true;
			}
			si++;
		}
		return process(s, p, si, pi+2);
	}
}
 
 
分享到:
评论

相关推荐

    regular expression library正则表达式库

    GNU Regex 程式库是 GNU 发展,提供操作比对 Regular Expression 文字字串的程式库,也就是使用 GNU Regex 程式库,可以作到以下的功能: 比对一字串是否完全与 Regular Expression 相幅合。 在一字串中寻找与 ...

    A DFA-Based Regular Expression Matching Engine on A NetFPGA Platform

    采用NetFPGA平台进行深度包检测的实例,非常好的一个例子,相当详细的说明了处理过程。在DPI处理方面有着很好的指导意义。

    An Efficient Pre-filter to Accelerate Regular Expression Matching

    Regular expression matching is widely used in content-aware applications, such as NIDS and protocol identification. However, wirespeed processing for large scale patterns still remains a great ...

    [Apache Flume] Apache Flume 分布式日志采集应用 (Hadoop 实现) (英文版)

    Route and separate your data using regular expression matching Configure failover paths and load-balancing to remove single points of failure Utilize Gzip Compression for files written to HDFS ☆ ...

    c语言-leetcode 0010-regular-expression-matching.zip

    c c语言_leetcode 0010_regular_expression_matching.zip

    Coding Interview In Java

    10 Regular Expression Matching in Java 39 11 Merge Intervals 43 12 Insert Interval 45 13 Two Sum 47 14 Two Sum II Input array is sorted 49 15 Two Sum III Data structure design 51 16 3Sum 53 17 4Sum 55...

    js-leetcode题解之10-regular-expression-matching.js

    js js_leetcode题解之10-regular-expression-matching.js

    C语言-leetcode题解之10-regular-expression-matching.c

    c语言入门 C语言_leetcode题解之10-regular-expression-matching.c

    Regular-Expression-Matching.zip_图形图像处理_C/C++_

    在这个压缩包中,我们有一个名为"Regular Expression Matching"的资源,它很可能包含了一个C或C++编写的算法,用于解决这个问题。 正则表达式(Regular Expression)是一种特殊的字符序列,用于描述一种字符串模式...

    IEEE模式匹配算法论文2

    2. **Hybrid Memory Architecture for Regular Expression Matching.pdf**:混合内存架构可能是指结合不同类型的内存(如DRAM和SRAM)来优化正则表达式匹配的性能。正则表达式是模式匹配的一种强大工具,用于识别...

    RegTest正则表达式匹配工具

    C#做的正则表达式匹配工具,可以实时显示匹配结果,带分组输出。 (C# do regular expression matching tool, you can display the matching results in real-time, with packet output.)

    LeetCode 刷题汇总1

    * 正则表达式匹配(Regular Expression Matching):实现正则表达式匹配。 * 实现strStr()(Implement strStr()):实现字符串搜索算法。 7. 排序和搜索: * 合并两个排序列表(Merge Two Sorted Lists):合并两...

    2018年最新Google Onsite面经总结1

    Regular Expression Matching、136. Single Number等。这类题目通常要求读者使用排序和查找算法来解决问题,例如使用快速排序、归并排序、-binary-search等算法。 本文总结了Google Onsite面经的各种题目,涵盖了...

    re2c-0.15.3.tar.gz

    Unlike any other such tool, re2c focuses on generating high efficient code for regular expression matching. re2c is a preprocessor that generates C-based recognizers from regular expressions.

    LeetCode题解 - Java语言实现-181页.pdf

    8. Regular Expression Matching in Java 正则表达式匹配是一个字符串问题,要求使用正则表达式来匹配字符串。可以使用Java的Pattern和Matcher类来解决该问题。 9. Merge Intervals 区间合并是一个数组问题,要求...

    LeetCode题解(java语言实现).pdf

    * Regular Expression Matching in Java:该题目要求匹配字符串和正则表达式,实现方法使用了动态规划算法。 * Merge Intervals:该题目要求合并重叠的区间,实现方法使用了排序和迭代算法。 * Insert Interval:该...

    正则表达式

    在《Regular Expression Matching Can Be Simple And Fast》这篇文章中,作者讨论了如何实现高效的正则表达式匹配算法。通常,正则表达式的匹配过程可以通过构建和运行自动机来完成。这篇文章深入探讨了两种自动机...

    leetcode常见的100热点算法题

    10. **字符串处理**:"Regular Expression Matching"(正则表达式匹配)和"Longest Palindromic Substring"(最长回文子串)这类题目测试了对字符串处理的理解和运用。 这些热门题目不仅有助于提升编程技能,也是对...

    lrucacheleetcode-luoleet:LeetcodesolutionsbyXinhangLuoandQinghaoDai

    https://leetcode.com/problems/regular-expression-matching/ Regular Expression Matching 100 https://leetcode.com/problems/same-tree/ Same Tree 101 https://leetcode.com/problems/symmetric-tree/ ...

Global site tag (gtag.js) - Google Analytics