【劍指Offer刷題小記】正則表達(dá)式匹配(JAVA版)

題目描述:請實(shí)現(xiàn)一個函數(shù)用來匹配包括'.'和'*'的正則表達(dá)式要门。模式中的字符'.'表示任意一個字符擒贸,而'*'表示它前面的字符可以出現(xiàn)任意次(包含0次)矢门。 在本題中誉结,匹配是指字符串的所有字符匹配整個模式董虱。例如店煞,字符串"aaa"與模式"a.a"和"ab*ac*a"匹配苞慢,但是與"aa.a"和"ab*a"均不匹配

問題分析:首先來看匹配完全的必要條件诵原,就是模式串遍歷完,同時原字符串也遍歷完枉疼。據(jù)此皮假,可以從前往后依次匹配直到匹配完全。由于’.’表示任意字符骂维,因此可與任意字符匹配惹资,可看作原串當(dāng)前遍歷到的字符。而’*‘的匹配結(jié)果則與‘*’前的字符有關(guān)航闺,所以對于模式串當(dāng)前字符下一位是不是‘*’褪测,可分為兩種情況:

(1)當(dāng)前字符下一位不是‘*’:

? ? ? ? 這里又分為兩種情況:

? ? ? ? 1o 當(dāng)前字符匹配猴誊。那么原串和模式串都向后移一位,例如:

? ? ? 2o 當(dāng)前字符不匹配侮措。那么直接返回false懈叹,例如:


(2)當(dāng)前字符下一位不是‘*’:

? ? 1o 當(dāng)前字符不匹配。那么為了盡可能進(jìn)行匹配分扎,就要去除模式串的當(dāng)前字符澄成,去判斷其后面的字符,也就是模式串向后移兩位畏吓,例如:

? ? 2o 當(dāng)前字符匹配:此時有多種情況

? ? ? ? ? ·1.‘*’表示前面的字符出現(xiàn)0次:那么原串不移動墨状,模式串向后移兩位。如 aab/aa*ab? (加粗的為當(dāng)前字符)

? ? ? ? ? ·2.‘*’表示前面的字符出現(xiàn)1次:那么原串向后移一位菲饼,模式串向后移兩位肾砂。如aab/aa*b

? ? ? ? ? ·3.‘*’表示前面的字符出現(xiàn)n次(n>1):那么原串向后移一位,模式串不移動宏悦。如aaa/aa*

? ? 只要上面三種情況的任意一種匹配成功即可

代碼截圖

這里要注意條件判斷的先后順序镐确,首先判斷索引是否超過長度,不然會導(dǎo)致越界的錯誤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饼煞,一起剝皮案震驚了整個濱河市源葫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌派哲,老刑警劉巖臼氨,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芭届,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)感耙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門褂乍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人即硼,你說我怎么就攤上這事逃片。” “怎么了只酥?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵褥实,是天一觀的道長。 經(jīng)常有香客問我裂允,道長损离,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任绝编,我火速辦了婚禮僻澎,結(jié)果婚禮上貌踏,老公的妹妹穿的比我還像新娘。我一直安慰自己窟勃,他們只是感情好祖乳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秉氧,像睡著了一般眷昆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汁咏,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天亚斋,我揣著相機(jī)與錄音,去河邊找鬼梆暖。 笑死伞访,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的轰驳。 我是一名探鬼主播厚掷,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼级解!你這毒婦竟也來了冒黑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤勤哗,失蹤者是張志新(化名)和其女友劉穎抡爹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芒划,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冬竟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了民逼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泵殴。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拼苍,靈堂內(nèi)的尸體忽然破棺而出笑诅,到底是詐尸還是另有隱情,我是刑警寧澤疮鲫,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布吆你,位于F島的核電站,受9級特大地震影響俊犯,放射性物質(zhì)發(fā)生泄漏妇多。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一瘫析、第九天 我趴在偏房一處隱蔽的房頂上張望砌梆。 院中可真熱鬧默责,春花似錦、人聲如沸咸包。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烂瘫。三九已至媒熊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坟比,已是汗流浹背芦鳍。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留葛账,地道東北人柠衅。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像籍琳,于是被迫代替她去往敵國和親菲宴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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