摘要:手動實現(xiàn)正則表達式匹配函數(shù)思路使用迭代,當每次判斷后令當時特殊處理,注意可以代表到多個之前一個的字符當時,循環(huán)判斷代表多少個之前一個的字符,如果可以匹配之后的模式,返回,否則注意處理邊界值的情況,和為空串時代碼可以代表一到多次本題以及其它題
手動實現(xiàn).*正則表達式匹配函數(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思路
使用迭代,當p[1] != "*"每次判斷p[0] == s[0]后令s = s[1:], p = p[1:]
當p[1] == "*"時特殊處理,注意 * 可以代表0到多個*之前一個的字符
當p[1] == "*"時,循環(huán)判斷*代表多少個*之前一個的字符,如果s可以匹配*之后的模式,返回True,否則s = s[1:]
注意處理邊界值的情況,s 和 p為空串時
代碼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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38649.html
摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...
摘要:一前言正則表達式入門實踐系列文章適合熟悉至少使用過正則表達式的同學(xué),在文章開始的時候我們都會帶著問題去思考如何正確應(yīng)用正則表達式解決出現(xiàn)的問題,在解決問題的過程中增長你的知識,提高你的實踐能力。 一 前言 正則表達式入門實踐系列文章適合熟悉至少使用過正則表達式的同學(xué),在文章開始的時候我們都會帶著問題去思考如何正確應(yīng)用正則表達式解決出現(xiàn)的問題,在解決問題的過程中增長你的知識,提高你的實踐...
摘要:正則基礎(chǔ)詳解開頭,結(jié)尾匹配次或多次匹配次匹配次或次當跟在后面時,匹配模式是非貪婪的匹配確定是次,非負數(shù)匹配除了換行符以外的任何字符包括點本身小括號中的內(nèi)容只匹配不捕獲正向預(yù)查負向預(yù)查匹配或者匹配中任何一個匹配未包含的任意字符匹配指定范圍 正則基礎(chǔ)詳解 /^開頭,結(jié)尾$/ * 匹配0次或多次 + 匹配1-n次 ?匹配0次或1次; 當?跟在 * + {n} {n,m} {n,} 后面時...
摘要:下面跟大家詳細分享一下寫爬蟲抓取靜態(tài)網(wǎng)站的全過程。而我們上面說的元字符都代表一定的規(guī)則和占據(jù)一定的字符。 遇到的需求 前段時間需要快速做個靜態(tài)展示頁面,要求是響應(yīng)式和較美觀。由于時間較短,自己動手寫的話也有點麻煩,所以就打算上網(wǎng)找現(xiàn)成的。 中途找到了幾個頁面發(fā)現(xiàn)不錯,然后就開始思考怎么把頁面給下載下來。 由于之前還沒有了解過爬蟲,自然也就沒有想到可以用爬蟲來抓取網(wǎng)頁內(nèi)容。所以我采取的辦...
閱讀 2368·2021-11-18 10:07
閱讀 2318·2021-09-22 15:59
閱讀 3077·2021-08-23 09:42
閱讀 2276·2019-08-30 15:44
閱讀 1191·2019-08-29 15:06
閱讀 2303·2019-08-29 13:27
閱讀 1210·2019-08-29 13:21
閱讀 1412·2019-08-29 13:13