java面试题(4)
来源:互联网 发布:oracle sql 去掉重复 编辑:程序博客网 时间:2024/05/16 19:27
原题:
// 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; 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) != '.') { 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]); } } } } return dp[s.length()][p.length()]; }}
阅读全文
0 0
- Java面试题(4)
- java面试题(4)
- java面试题(4)
- java面试题(4)
- Java面试题(4)
- java面试题4
- JAVA面试题4
- 面试题(Java)
- JAVA面试题最全集(4)
- 【转】JAVA面试题(自查)4
- Java面试题全集(4)
- java经典面试题(4)
- Java面试题全集(4)
- Java小面试题(4)
- Java面试题集--Java面试题(答案)
- JAVA基础面试题4
- JAVA基础面试题4
- java经典面试题(4)
- flume拦截器
- Windows2008服务器设置多人同时远程
- Postgresql连接用户过多
- [ 数据结构 ] DS线性表综合练习--组队列
- Android MVVM模式的理解
- java面试题(4)
- 管道pipe 基础
- Android中解析json数据的三种方式
- 初学Android之Tablayout+Fragment+ImageLoader(低仿知乎)
- java面试题(5)
- ant+findbugs 扫描代码生成报告
- java面试题(6)
- POJ1062->最短路Dij
- java面试题(7)