10. Regular Expression Matching
来源:互联网 发布:数控冲床编程教程 编辑:程序博客网 时间:2024/06/18 17:14
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
public class Solution { public boolean isMatch(String s, String p) {if (s == null || p == null) {return false;}boolean[][] dp = new boolean[s.length() + 1][p.length() + 1];dp[0][0] = true;for (int i = 0; i < p.length(); i++) {if (p.charAt(i) == '*' && dp[0][i - 1]) {dp[0][i + 1] = true;}} for (int i = 0; i < s.length(); i++) {for (int j = 0; j < p.length(); j++) {if (p.charAt(j) == '.') {dp[i + 1][j + 1] = dp[i][j];}if (p.charAt(j) == s.charAt(i)) {dp[i + 1][j + 1] = dp[i][j];}if (p.charAt(j) == '*') {if (p.charAt(j - 1) != s.charAt(i) && p.charAt(j - 1) != '.') { //match 0个的case,前一个字符跟当前不等dp[i + 1][j + 1] = dp[i + 1][j - 1];} else {dp[i + 1][j + 1] = (dp[i + 1][j] || dp[i][j + 1] || dp[i + 1][j - 1]); //match 多个的情况}}}}return dp[s.length()][p.length()]; }}
0 0
- 10. Regular Expression Matching
- 10.Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- hdu 2013 蟠桃记
- hdu 2014 青年歌手大奖赛_评委会打分
- CCF NOI1060 雷同检测
- 273. Integer to English Words
- 心形图案生成
- 10. Regular Expression Matching
- I/O 简单文本文件读写改 对象 ArrayList保存文件的记录
- java集合系列08 ArrayList
- Archive Data
- PTA 4-3简单求和
- NetBots5.5代码分析之套接字模型1
- 初识爬虫
- NetBots5.5代码分析之套接字模型2
- Tomcat热部署