麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

LeetCode Wildcard Matching

2019-11-11 04:47:47
字體:
供稿:網(wǎng)友

Implement wildcard pattern matching with support for '?' and '*'.

'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover the entire input string (not partial).The function PRototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "*") → trueisMatch("aa", "a*") → trueisMatch("ab", "?*") → trueisMatch("aab", "c*a*b") → false

思路一:

代碼如下:

class Solution {public:    bool isMatch(string s, string p) {        int sIndex=0,pIndex=0,match=0,starIdx=-1;        while(sIndex < s.length())        {            if(pIndex < p.length() && (p[pIndex] == '?' || p[pIndex] == s[sIndex]))            {                pIndex++;                sIndex++;            }            else if(pIndex < p.length() && p[pIndex] == '*')            {                starIdx = pIndex;                pIndex++;                match = sIndex;            }            else if(starIdx!=-1)            {                pIndex = starIdx+1;                match++;                sIndex = match;            }            else                return false;        }                while(pIndex<p.length() && p[pIndex] == '*')            pIndex++;                    return pIndex == p.length();    }};

思路二:使用大殺器 -動態(tài)規(guī)劃,列出動態(tài)方程如下:

if p[j-1] != '*', then dp[i][j] = dp[i-1][j-1] && (s[i-1] == p[j-1] || p[j-1] == '?')

if p[j-1] == '*', then dp[i][j] = dp[i-1][j] || dp[i][j-1]

需要注意的是dp方程組的初始化,dp[0][i](i=1,2,3...)根據(jù)p來進行,因為*可以代表空,所以當開頭字串為*時,需要在dp[0][i]中相應(yīng)位置設(shè)為true。 最后dp[0][0]設(shè)置為true

代碼如下:

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


上一篇:494. Target Sum

下一篇:1075

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩一级片 | 日韩av在线网 | 红杏网站永久免费视频入口 | 久久久电影电视剧免费看 | 成人在线视频在线观看 | 精品一区免费 | 精品中文一区 | av中文字幕免费在线观看 | 在线观看中文字幕av | 亚洲成人福利网站 | 在线97视频| 操操插插 | 欧产日产国产精品v | 91精品国产日韩91久久久久久360 | 第四色成人网 | 精品久久999 | 欧美激情首页 | 成年人在线视频 | 69性欧美高清影院 | 日本视频在线播放 | 久久激情小视频 | 92精品国产自产在线 | 国产亚洲精品影达达兔 | 成人激情久久 | 成人影片在线免费观看 | 羞羞视频免费视频欧美 | 欧美18videos性处按摩 | 黄色av片三级三级三级免费看 | 毛片成人网 | 免费黄色在线电影 | 国产一区视频观看 | 精品一区二区久久久久久按摩 | 天天草天天干天天射 | av电影院在线观看 | www.99tv| 久久性生活免费视频 | 羞羞草视频| 91九色网址 | 久久精品成人免费国产片桃视频 | 99在线热播精品免费 | 羞羞视频免费视频欧美 |