日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

44 Wild card Matching

發(fā)布時間:2025/5/22 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 44 Wild card Matching 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

leetcode 44題,題目大意是兩個字符串s,p,s是原字符串,p是匹配字符串.匹配字符串中*可以代替任意長度字符串(包括空字符串);?可以視作任意單個字符串,下面是一些示例

Input: s = "aa" p = "a" Output: false Explanation: "a" does not match the entire string "aa". Example 2:Input: s = "aa" p = "*" Output: true Explanation: '*' matches any sequence. Example 3:Input: s = "cb" p = "?a" Output: false Explanation: '?' matches 'c', but the second letter is 'a', which does not match 'b'. Example 4:Input: s = "adceb" p = "*a*b" Output: true Explanation: The first '*' matches the empty sequence, while the second '*' matches the substring "dce". Example 5:Input: s = "acdcb" p = "a*c?b" Output: false

采用的方法毫無疑問就是動態(tài)規(guī)劃,(i,j)代表了s前i個字符和p前j個字符是否匹配,我一開始用的是字典:

class Solution:def isMatch(self, s, p):""":type s: str:type p: str:rtype: bool"""dict_mn = {}m = len(s)n = len(p)dict_mn[(0,0)] = Truefor i in range(1, m+1):dict_mn[(i, 0)] = Falsefor j in range(1, n+1):# for i in range(0, m):pj = p[j-1]if pj == "?":for i in range(0, m+1):dict_mn[(i, j)] = dict_mn.get((i-1, j-1), False)elif pj == "*":for i in range(0, m+1):dict_mn[(i, j)] = dict_mn[(i, j-1)] or dict_mn.get((i-1, j), False)else:for i in range(0, m+1):dict_mn[(i, j)] = dict_mn.get((i-1, j-1), False) and s[i-1] == p[j-1]return dict_mn[(m, n)]

但是提示說內(nèi)存不足

class Solution:def isMatch(self, s, p):""":type s: str:type p: str:rtype: bool"""m = len(s)n = len(p)dp = [[None for _ in range(n+1)] for _ in range(m+1)]dp[0][0] = Truefor i in range(1, m+1):dp[i][0] = Falsefor j in range(1, n+1):dp[0][j] = dp[0][j-1] and p[j-1] == "*"for j in range(1, n+1):for i in range(1, m+1):pj = p[j-1]if pj == "?":dp[i][j] = dp[i-1][j-1]elif pj == "*":dp[i][j] = dp[i][j-1] or dp[i-1][j]else:dp[i][j] = dp[i-1][j-1] and s[i-1] == p[j-1]return dp[m][n]

這下就沒問題了,看見一個很有意思的解法:

class Solution:def isMatch(self, s, p):""":type s: str:type p: str:rtype: bool"""if len(p) == 0:return len(s) == 0i, j, match_s, star_p = 0, 0, -1, -1while i < len(s):if j < len(p) and (s[i] == p[j] or p[j] == '?'):i += 1j += 1elif j < len(p) and p[j] == '*':match_s, star_p = i, jj += 1elif star_p >= 0:i, j = match_s + 1, star_p + 1match_s += 1else:return Falsewhile j < len(p) and p[j] == '*':j += 1return j == len(p)

用了兩個變量存儲前面的匹配數(shù)量,反復(fù)迭代,很有想法,如果p中出現(xiàn)兩個*號,那么前面的匹配或者是后面的匹配并沒有結(jié)果上區(qū)別.

轉(zhuǎn)載于:https://www.cnblogs.com/mangmangbiluo/p/10148895.html

總結(jié)

以上是生活随笔為你收集整理的44 Wild card Matching的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: jizz18欧美18| 亚洲一区二区三区在线视频观看 | 中文字幕在线观看日韩 | 五月婷婷丁香综合 | av天天在线 | 亚洲天堂女人 | 丰满少妇在线观看资源站 | 欧美精品黑人猛交高潮 | 久久精品无码一区二区三区免费 | avxx| 国产精品呻吟 | 色资源网站 | 精品国产乱码久久久久夜深人妻 | av污在线观看 | 国产私拍视频 | 在线午夜| 久久久久麻豆v国产精华液好用吗 | 亚洲av日韩av不卡在线观看 | 久久五月婷 | wwwxxxx在线观看 | 欧美日韩国产不卡 | 中文字幕av资源 | 欧美在线免费观看 | 加勒比波多野结衣 | 97人人爽人人 | 1024毛片基地 | 懂色tv | 亚洲精品国偷拍自产在线观看蜜桃 | www黄色网址 | 国产成人无码精品久久 | 国产又黄又湿 | 91网站在线观看视频 | 小视频免费在线观看 | 国产婷 | 人人舔 | 美女扒开粉嫩尿口 | 91欧美成人 | 国产精品亚洲综合 | 欧美一级片a | 欧美人与动牲交a欧美精品 欧美三级在线看 | 亚洲三区在线 | 欧美三区在线观看 | 少妇逼逼 | 欧美成人三级 | 九九视频精品在线 | 国产综合精品久久久久成人影 | 日本免费一二区 | 日韩视频在线观看一区二区 | 亚洲欧美色图 | 欧美人与动物xxxx | 可以免费看污视频的网站 | 在线播放一区二区三区 | 日韩欧美中文字幕在线视频 | 日本性视频网站 | 亚洲韩国精品 | 影音先锋制服丝袜 | 无码少妇精品一区二区免费动态 | 亚洲成人精品久久 | 天天插天天透 | 在线观看v片 | 麻豆视频精品 | 夜夜嗨aⅴ一区二区三区 | 久久久久女教师免费一区 | 色窝av| 在线视频中文字幕 | 中文字幕精品一区二区精 | 亚洲一区二区在线电影 | 99re视频在线观看 | 日韩va视频| 国产av第一区 | 国产在线观看免费视频今夜 | 鲁一鲁在线视频 | 日韩精品视频免费 | 免费视频网站在线观看入口 | 一区二区免费 | 成人影视免费观看 | 4438国产精品一区二区 | 久久久午夜影院 | 丝袜老师扒开让我了一夜漫画 | 黄色av小说在线观看 | 精品无码免费视频 | 国产精品一区二区av白丝下载 | 校园春色综合网 | 欧美一区三区三区高中清蜜桃 | 日本熟妇乱子伦xxxx | 丰满大爆乳波霸奶 | 歪歪视频在线观看 | 99成人国产精品视频 | 女教师高潮黄又色视频 | 特大黑人巨交吊性xxxxhd | 黄色男人的天堂 | 欧美精品在线第一页 | www午夜视频| 动漫大乳美女 | 窝窝午夜理论片影院 | 中文字幕有码无码人妻av蜜桃 | 超碰av在线免费观看 | 一区二区在线观看免费视频 | 最近中文字幕免费 |