• leetcode 44 Wildcard Matching


    1. 动态规划

    class Solution {
    public:
        bool isMatch(string s, string p) {
            int m=s.size(),n=p.size();
            vector<vector<bool>> dp(m+1,vector<bool>(n+1,false));
            dp[0][0]=true;
            for(int i=1;i<=n&&p[i-1]=='*';++i) {
                dp[0][i]=true;
            }
            for(int i=1;i<=m;++i) {
                for(int j=1;j<=n;++j) {
                    if(p[j-1]=='*') {
                        dp[i][j]=dp[i][j-1]||dp[i-1][j];
                    }
                    else {
                        dp[i][j]=(p[j-1]=='?'||s[i-1]==p[j-1])&&dp[i-1][j-1];
                    }
                }
            }
            return dp[m][n];
        }
    };

     2. star记录*的位置,match记录*匹配的位置,匹配的位置从0个开始

    class Solution {
    public:
        bool isMatch(string s, string p) {
            int i=0,j=0,star=-1,match=0;
            while(i<s.size()) {
                if(j<p.size()&&(s[i]==p[j]||p[j]=='?')) {
                    ++i;
                    ++j;
                }
                else if(p[j]=='*') {
                    star=j;
                    match=i;
                    ++j;
                }
                else if(star!=-1) {
                    j=star+1;
                    i=++match;
                }
                else return false;
            }
            while(j<p.size()&&p[j]=='*') ++j;
            return j==p.size();
        }
    };
  • 相关阅读:
    p3159 [CQOI2012]交换棋子
    三分法
    p2805 [NOI2009]植物大战僵尸
    p2604 [ZJOI2010]网络扩容
    p1129 [ZJOI2007]矩阵游戏
    有趣与愉快-------罗辑思维整理
    张小龙的书单
    会议
    使用CCProxy代理遇到的问题
    关于看书
  • 原文地址:https://www.cnblogs.com/LiuQiujie/p/12715754.html
Copyright © 2020-2023  润新知