剑指 Offer 19. 正则表达式匹配

剑指 Offer 19. 正则表达式匹配

初始化要考虑主串为空字符串,模式串为 a*b*c* 的形式。

一般情况时,根据模式串是普通字符'.''*'分情况考虑。为'*'时,考虑匹配0次匹配多次的情况,匹配多次时要注意判断前提是能匹配。

java 复制代码
class Solution {
    public boolean isMatch(String s, String p) {
        int m = s.length(), n = p.length();
        boolean[][] dp = new boolean[m + 1][n + 1];
        dp[0][0] = true;
        for(int i = 2; i <= n; i += 2) {
            if(p.charAt(i - 1) == '*'){
                dp[0][i] = dp[0][i - 2];
            }
        }

        for(int i = 1; i <= m; i++){
            for(int j = 1; j <= n; j++){
                if(p.charAt(j - 1) == s.charAt(i - 1)){
                    dp[i][j] = dp[i - 1][j - 1];
                }else if(p.charAt(j - 1) == '.'){
                    dp[i][j] = dp[i - 1][j - 1];
                }else if(p.charAt(j - 1) == '*'){
                    dp[i][j] = dp[i][j - 2];  // 匹配0次
                    if(p.charAt(j - 2) == s.charAt(i - 1) ||  p.charAt(j - 2) == '.') dp[i][j] |= dp[i - 1][j];  // 匹配多次
                }
            }
        }

        return dp[m][n];
    }
}
相关推荐
GreenTea2 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
fqq33 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
2501_906565126 小时前
数学之美探究
算法
oier_Asad.Chen6 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环
leisoo80978 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
luj_176810 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
郝学胜-神的一滴10 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆11 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng11 小时前
2024牛客暑期多校训练营1
算法
hetao173383711 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法