成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

手動(dòng)實(shí)現(xiàn).*正則表達(dá)式匹配函數(shù)

muddyway / 1048人閱讀

摘要:手動(dòng)實(shí)現(xiàn)正則表達(dá)式匹配函數(shù)思路使用迭代,當(dāng)每次判斷后令當(dāng)時(shí)特殊處理,注意可以代表到多個(gè)之前一個(gè)的字符當(dāng)時(shí),循環(huán)判斷代表多少個(gè)之前一個(gè)的字符,如果可以匹配之后的模式,返回,否則注意處理邊界值的情況,和為空串時(shí)代碼可以代表一到多次本題以及其它題

手動(dòng)實(shí)現(xiàn).*正則表達(dá)式匹配函數(shù) regular expression matching

"." Matches any single character.

"*" Matches zero or more of the preceding element.

The matching should cover the entire input string (not partial).

Some examples:

isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true
isMatch("bbbba", ".*a*a") → true
isMatch("a", ".*..a*") → False
isMatch("a", "ab*") → true 
isMatch("ab", ".*c") → False 
思路

使用迭代,當(dāng)p[1] != "*"每次判斷p[0] == s[0]后令s = s[1:], p = p[1:]

當(dāng)p[1] == "*"時(shí)特殊處理,注意 * 可以代表0到多個(gè)*之前一個(gè)的字符

當(dāng)p[1] == "*"時(shí),循環(huán)判斷*代表多少個(gè)*之前一個(gè)的字符,如果s可以匹配*之后的模式,返回True,否則s = s[1:]

注意處理邊界值的情況,sp為空串時(shí)

代碼
class Solution(object):
    def matchChar(self, sc, pc):
        return sc == pc or pc == "."

    def isEndOfStar(self, p):
        while p != "":
            if len(p) == 1 or len(p) > 1 and p[1] != "*":
                return False
            p = p[2:]
        return True

    def isMatch(self, s, p):
        if p == "":
            return s == ""

        if s == "":
            return self.isEndOfStar(p)

        if (len(p) > 1 and p[1] != "*") or len(p) == 1:
            # without *
            if not self.matchChar(s[0], p[0]):
                return False
            else:
                return self.isMatch(s[1:], p[1:])

        else:
            # with *
            # try see x* is empty
            if self.isMatch(s[0:], p[2:]):
                return True

            # x* 可以 代表 x 一到多次
            while self.matchChar(s[0], p[0]):
                s = s[1:]

                if self.isMatch(s, p[2:]):
                    return True

                if s == "":
                    return self.isEndOfStar(p)
            return False

本題以及其它leetcode題目代碼github地址: github地址

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38649.html

相關(guān)文章

  • JavaScript正則達(dá)式匹配模式

    摘要:選擇分組和引用正則表達(dá)式的語(yǔ)法還包括指定選擇項(xiàng)子表達(dá)式分組和引用前一子表達(dá)式的特殊字符。帶圓括號(hào)的表達(dá)式的另一個(gè)用途是允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式。 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。JavaScript的 RegExp類 表示正則表達(dá)式,String和RegExp都定義了方法,后者使用正則表達(dá)式進(jìn) 行強(qiáng)大的模式匹配和文本檢索與...

    wqj97 評(píng)論0 收藏0
  • 正則達(dá)式入門實(shí)踐(一)

    摘要:一前言正則表達(dá)式入門實(shí)踐系列文章適合熟悉至少使用過(guò)正則表達(dá)式的同學(xué),在文章開(kāi)始的時(shí)候我們都會(huì)帶著問(wèn)題去思考如何正確應(yīng)用正則表達(dá)式解決出現(xiàn)的問(wèn)題,在解決問(wèn)題的過(guò)程中增長(zhǎng)你的知識(shí),提高你的實(shí)踐能力。 一 前言 正則表達(dá)式入門實(shí)踐系列文章適合熟悉至少使用過(guò)正則表達(dá)式的同學(xué),在文章開(kāi)始的時(shí)候我們都會(huì)帶著問(wèn)題去思考如何正確應(yīng)用正則表達(dá)式解決出現(xiàn)的問(wèn)題,在解決問(wèn)題的過(guò)程中增長(zhǎng)你的知識(shí),提高你的實(shí)踐...

    chanthuang 評(píng)論0 收藏0
  • 正則基礎(chǔ)詳解

    摘要:正則基礎(chǔ)詳解開(kāi)頭,結(jié)尾匹配次或多次匹配次匹配次或次當(dāng)跟在后面時(shí),匹配模式是非貪婪的匹配確定是次,非負(fù)數(shù)匹配除了換行符以外的任何字符包括點(diǎn)本身小括號(hào)中的內(nèi)容只匹配不捕獲正向預(yù)查負(fù)向預(yù)查匹配或者匹配中任何一個(gè)匹配未包含的任意字符匹配指定范圍 正則基礎(chǔ)詳解 /^開(kāi)頭,結(jié)尾$/ * 匹配0次或多次 + 匹配1-n次 ?匹配0次或1次; 當(dāng)?跟在 * + {n} {n,m} {n,} 后面時(shí)...

    YanceyOfficial 評(píng)論0 收藏0
  • python爬蟲(chóng)抓取純靜態(tài)網(wǎng)站及其資源

    摘要:下面跟大家詳細(xì)分享一下寫(xiě)爬蟲(chóng)抓取靜態(tài)網(wǎng)站的全過(guò)程。而我們上面說(shuō)的元字符都代表一定的規(guī)則和占據(jù)一定的字符。 遇到的需求 前段時(shí)間需要快速做個(gè)靜態(tài)展示頁(yè)面,要求是響應(yīng)式和較美觀。由于時(shí)間較短,自己動(dòng)手寫(xiě)的話也有點(diǎn)麻煩,所以就打算上網(wǎng)找現(xiàn)成的。 中途找到了幾個(gè)頁(yè)面發(fā)現(xiàn)不錯(cuò),然后就開(kāi)始思考怎么把頁(yè)面給下載下來(lái)。 由于之前還沒(méi)有了解過(guò)爬蟲(chóng),自然也就沒(méi)有想到可以用爬蟲(chóng)來(lái)抓取網(wǎng)頁(yè)內(nèi)容。所以我采取的辦...

    daydream 評(píng)論0 收藏0
  • 正則與JS中的正則

    摘要:注意本文將正則與中的正則分開(kāi)討論。正則零寬斷言更多參考各種語(yǔ)言對(duì)于正則不同支持參考單行模式與多行模式通過(guò)設(shè)置正則表達(dá)式后的修飾符可開(kāi)啟對(duì)應(yīng)的匹配模式單行模式和多行模式。 最近這段時(shí)間幫同學(xué)處理一些文檔, 涉及到一些結(jié)構(gòu)化文檔的工作大部分都得使用正則表達(dá)式, 之前對(duì)于正則的認(rèn)識(shí)大多來(lái)源于語(yǔ)言書(shū)上那幾頁(yè)的介紹, 自己也沒(méi)有用過(guò)幾次。這里將我之前感到模糊的概念作個(gè)整理。因?yàn)閷?duì)JS了解多點(diǎn),所...

    firim 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<