zoukankan      html  css  js  c++  java
  • 044 Wildcard Matching 通配符匹配

    实现一个支持 '?' 和 '*' 的通配符匹配。
    '?' 匹配任何单个字符。
    '*' 匹配任何数量的字符 (包括0个)。
    匹配应覆盖 整个 输入字符串(而不是部分)。
    这个函数原型为:
    bool isMatch(const char *s, const char *p)
    示例:
    isMatch("aa","a") → false
    isMatch("aa","aa") → true
    isMatch("aaa","aa") → false
    isMatch("aa", "*") → true
    isMatch("aa", "a*") → true
    isMatch("ab", "?*") → true
    isMatch("aab", "c*a*b") → false
    详见:https://leetcode.com/problems/wildcard-matching/description/

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

     参考:https://www.cnblogs.com/grandyang/p/4401196.html

  • 相关阅读:
    20145总结
    2014515 总结
    2014514 总结
    20148总结
    20147总结
    20146总结
    20149总结
    2014512 总结
    2014513 总结
    【Visual Lisp】驱动器、目录、文件和注册表
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8690645.html
Copyright © 2011-2022 走看看