10. 正則表達(dá)式匹配-leetCode&python

1益楼、題目
給你一個(gè)字符串 s 和一個(gè)字符規(guī)律 p篡九,請(qǐng)你來(lái)實(shí)現(xiàn)一個(gè)支持 '.' 和 '*' 的正則表達(dá)式匹配章办。

'.' 匹配任意單個(gè)字符
'*' 匹配零個(gè)或多個(gè)前面的那一個(gè)元素
所謂匹配带膜,是要涵蓋 整個(gè) 字符串 s的批狐,而不是部分字符串扇售。

2、代碼

class Solution(object):

        def isMatch(self, s, p):
            """
            使用一個(gè)二維數(shù)組dp來(lái)記錄字符串s的前i個(gè)字符和模式p的前j個(gè)字符是否匹配嚣艇。然后根據(jù)字符規(guī)律p中的字符進(jìn)行狀態(tài)轉(zhuǎn)移承冰,最終返回dp[m][n],表示整個(gè)字符串s和模式p是否匹配食零,其中m為字符串s的長(zhǎng)度困乒,n為字符規(guī)律p的長(zhǎng)度。
            """
            len_s, len_p = len(s), len(p)
            dp = [[False] * (len_p + 1) for _ in range(len_s + 1)]  # 字符串s的前i個(gè)字符和模式p的前j個(gè)字符是否匹配贰谣。

            # 初始化
            dp[0][0] = True
            for j in range(1, len_p + 1):
                if p[j - 1] == '*':
                    dp[0][j] = dp[0][j - 2]
            # 狀態(tài)更新
            """
            遍歷字符串s和模式p的所有字符娜搂,根據(jù)當(dāng)前字符的匹配情況進(jìn)行狀態(tài)更新。
            如果當(dāng)前字符s[i - 1]和p[j - 1]相等吱抚,或者p[j - 1]為'.'百宇,則dp[i][j]取決于dp[i - 1][j - 1],即s的前i-1個(gè)字符和p的前j-1個(gè)字符是否匹配秘豹。
            如果p[j - 1]為'*'携御,則需要進(jìn)一步判斷:
            如果s[i - 1]和p[j - 2]不相等,并且p[j - 2]也不是'.',則'*'表示0個(gè)前面的字符啄刹,此時(shí)dp[i][j]取決于dp[i][j - 2]涮坐。
            否則,''可以表示0個(gè)或多個(gè)前面的字符誓军。如果s[i - 1]和p[j - 2]相等袱讹,或者p[j - 2]為'.',則dp[i][j]可以從兩種狀態(tài)轉(zhuǎn)移而來(lái):要么''表示0個(gè)前面的字符(dp[i][j - 2])昵时,要么'*'表示多個(gè)前面的字符(dp[i - 1][j])捷雕。
            """
            for i in range(1, len_s + 1):
                for j in range(1, len_p + 1):
                    if s[i - 1] == p[j - 1] or p[j - 1] == '.':
                        dp[i][j] = dp[i - 1][j - 1]
                    elif p[j - 1] == '*':
                        if s[i - 1] != p[j - 2] and p[j - 2] != '.':
                            dp[i][j] = dp[i][j - 2]
                        else:
                            dp[i][j] = dp[i][j - 2] | dp[i - 1][j]
            return dp[len_s][len_p]

3、示例

    s=Solution()
    ts='aab'
    p='.*'
    res=s.isMatch(ts,p)
    print(res)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末债查,一起剝皮案震驚了整個(gè)濱河市非区,隨后出現(xiàn)的幾起案子瓜挽,更是在濱河造成了極大的恐慌盹廷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件久橙,死亡現(xiàn)場(chǎng)離奇詭異俄占,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淆衷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門缸榄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人祝拯,你說(shuō)我怎么就攤上這事甚带。” “怎么了佳头?”我有些...
    開(kāi)封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鹰贵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我康嘉,道長(zhǎng)碉输,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任亭珍,我火速辦了婚禮敷钾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肄梨。我一直安慰自己阻荒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布众羡。 她就那樣靜靜地躺著侨赡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辆毡,一...
    開(kāi)封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天菜秦,我揣著相機(jī)與錄音,去河邊找鬼舶掖。 笑死球昨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的眨攘。 我是一名探鬼主播主慰,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲫售!你這毒婦竟也來(lái)了共螺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤情竹,失蹤者是張志新(化名)和其女友劉穎藐不,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秦效,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雏蛮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阱州。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挑秉。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖苔货,靈堂內(nèi)的尸體忽然破棺而出犀概,到底是詐尸還是另有隱情,我是刑警寧澤夜惭,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布姻灶,位于F島的核電站,受9級(jí)特大地震影響滥嘴,放射性物質(zhì)發(fā)生泄漏木蹬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一若皱、第九天 我趴在偏房一處隱蔽的房頂上張望镊叁。 院中可真熱鬧,春花似錦走触、人聲如沸晦譬。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)敛腌。三九已至卧土,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間像樊,已是汗流浹背尤莺。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留生棍,地道東北人颤霎。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像涂滴,于是被迫代替她去往敵國(guó)和親友酱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容