题目

代码
class Solution {
public boolean isMatch(String s, String p) {
int sLen = s.length(), pLen = p.length();
boolean[][] memory = new boolean[sLen+1][pLen+1];
memory[0][0] = true;
for(int i = 0; i <= sLen; i++) {
for(int j = 1; j <= pLen; j++) {
if(p.charAt(j-1) == '*') {
memory[i][j] = memory[i][j-2]||(i > 0 && (s.charAt(i-1) == p.charAt(j-2)||p.charAt(j-2) == '.') && memory[i-1][j]);
}else memory[i][j] = i > 0 && (s.charAt(i-1) == p.charAt(j-1) || p.charAt(j-1) == '.')&& memory[i-1][j-1];
}//内循环结束
}//外循环结束
return memory[sLen][pLen];
}
}
运行结果及解析


这篇博客探讨了Java中解决正则表达式匹配问题的算法,通过一个名为`Solution`的类实现。代码使用动态规划方法,构建二维记忆矩阵来存储中间状态,有效地解决了字符串与模式串的匹配问题。博客深入解析了代码逻辑,包括内外循环的运行过程以及如何处理通配符'*'。
472

被折叠的 条评论
为什么被折叠?



