【LeetCode-面试算法经典-Java实现】【010-Regular Expresssion Matching(正则表达式匹配)】
来源:互联网 发布:python爬虫58同城 编辑:程序博客网 时间:2024/04/29 16:36
【010-Regular Expresssion Matching(正则表达式匹配)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
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
题目大意
实现一个正则表达式匹配算法,.匹配任意一个字符,*匹配0个或者多个前导字符
解题思路
使用标记匹配算法法,从后向前进行匹配。
代码实现
import java.util.Arrays;public class Solution { /** * 010-Regular Expresssion Matching(正则表达式匹配) * * @param s 匹配串 * @param p 模式串 * @return 匹配结果,true匹配,false不匹配 */ public boolean isMatch(String s, String p) { // 标记数数组 boolean[] match = new boolean[s.length() + 1]; // 初始化 Arrays.fill(match, false); // 假定最后的结果是匹配的 match[s.length()] = true; // 对模式串从后向前进行处理 for (int i = p.length() - 1; i >= 0; i--) { // 如果当前是* if (p.charAt(i) == '*') { // 匹配串从最后一个开始处理 for (int j = s.length() - 1; j >= 0; j--) { match[j] = match[j] || match[j + 1] && (p.charAt(i - 1) == '.' || s.charAt(j) == p.charAt(i - 1)); } i--; } // 如果不是* else { for (int j = 0; j < s.length(); j++) { match[j] = match[j + 1] && (p.charAt(i) == '.' || p.charAt(i) == s.charAt(j)); } match[s.length()] = false; } } return match[0]; }}
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
特别说明
欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/46951847】
2 0
- 【LeetCode-面试算法经典-Java实现】【010-Regular Expresssion Matching(正则表达式匹配)】
- 正则表达式匹配-leetcode Regular Expression Matching
- LeetCode OJ 之 Regular Expression Matching (正则表达式匹配)
- LeetCode 10 Regular Expression Matching (正则表达式匹配)
- leetcode系列(34)Regular Expression Matching 正则表达式匹配
- LeetCode 10. Regular Expression Matching(正则表达式匹配)
- leetcode 10 Regular Expression Matching(简单正则表达式匹配)
- leetcode Wildcard Matching ,Regular Expression Matching (正则表达式匹配和通配符匹配)
- 正则表达式匹配(Regular Expression Matching)
- 判断正则表达式是否匹配 Regular Expression Matching @LeetCode
- Leetcode #10 Regular Expression Matching 正则表达式匹配 解题小节
- leetcode(10) - Regular Expression Matching 正则表达式匹配
- Regular Expresssion Matching
- 通配符匹配 & 正则表达式匹配【leetcode Wildcard Matching & Regular Expression Matching】
- 多正则表达式匹配(Multiple Regular Expression Matching)
- Regular Expression Matching 正则表达式匹配
- 10. Regular Expression Matching&正则表达式匹配
- Regular Expression Matching正则表达式匹配
- c++11 实现半同步半异步线程池
- 【LeetCode-面试算法经典-Java实现】【009-Palindrome Number(回文数)】
- 开坑
- JAVA正则表达式,matcher.find()和 matcher.matches()的区别
- 操作系统概述(草稿)
- 【LeetCode-面试算法经典-Java实现】【010-Regular Expresssion Matching(正则表达式匹配)】
- AppStore中使用IDFA后提交应用的注意事项
- 【LeetCode-面试算法经典-Java实现】【011-ContainerWithMostWater(容纳最多的水)】
- rehl6.4 安装oracle11g
- NYOJ 54
- C++课程设计-银行储蓄系统
- UITextView内容自适应高度&行间距的调转
- Ubuntu 进入桌面几秒后黑屏
- 【UI】自定义cell的步骤