随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023

题目:

class Solution {
public:
    bool isMatch(string s, string p) {
        int m = s.size()+1, n = p.size()+1;
        vector<vector<bool>> dp(m, vector<bool>(n, false));      //设动态规划矩阵 dp , dp[i][j] 代表字符串 s 的前 i 个字符和 p 的前 j 个字符能否匹配
        dp[0][0] = true;                                         
        for(int j=2;j<n;j+=2){      //由于dp[0][0]代表的是空字符的状态,因此dp[i][j]对应的添加字符是s[i - 1]和p[j - 1]
            dp[0][j] = dp[0][j-2]&&p[j-1]=='*';      //只要初始化首行:s为空,p的偶数个为'*'时就匹配。首列一定不匹配。
        }
        for(int i=1;i<m;i++){
            for(int j=1;j<n;j++){
                if(p[j-1]=='*'){
                    if(dp[i][j-2]) dp[i][j] = true;      // aaa   aaab*
                    else if(dp[i-1][j]&&p[j-2]==s[i-1]) dp[i][j] = true;      // aaa  aa*
                    else if(dp[i-1][j]&&p[j-2]=='.') dp[i][j] = true;      // aaa   a.*
                }
                else{
                    if(dp[i-1][j-1]&&p[j-1]==s[i-1]) dp[i][j] = true;      // aab   aab
                    if(dp[i-1][j-1]&&p[j-1]=='.') dp[i][j] = true;      // aab   aa.
                }
            }
        }
        return dp[m-1][n-1];
    }
};

作者:Krahets
链接:https://leetcode.cn/problems/zheng-ze-biao-da-shi-pi-pei-lcof/solutions/494128/jian-zhi-offer-19-zheng-ze-biao-da-shi-pi-pei-dong/
来源:力扣(LeetCode)

posted on   孜孜不倦fly  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示