請實現乙個函式用來匹配包括』.『和』『的正規表示式。模式中的字元』.『表示任意乙個字元,而』'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配,但是與"aa.a"和"ab*a"均不匹配
方法一:
方法二:# -*- coding:utf-8 -*-
import re
class
solution
:# s, pattern都是字串
defmatch
(self, s, pattern)
:# write code here
return
true
if re.match(
"^"+ pattern +
"$", s)
else
false
模式中的字元』.『表示任意乙個字元,而』『表示它前面的字元可以出現任意次(包含0次)
字元』.'不重要,可以是任何字元。重點考慮字元「」。
兩種情況:
1.模式的下乙個字元不是』『號時:
如果第一字元相匹配,那麼字串和模式都後移一位,
如果不匹配,直接返回false;
2.模式的下乙個字元是』'號時:
如果字串第乙個字元和模式第乙個字元不匹配,把模式後移兩位(相當於匹配0位),繼續匹配。
如果第乙個字元相匹配,有三種處理情況:
1.可以把模式後移兩位,相當於x被忽略。
2.字串後移一位,模式不變,繼續匹配字串的一位,可以匹配多位。
3.字串後移一位,模式後移兩位,匹配下乙個字元和跳過的模式(相當於*匹配乙個字元)。
# -*- coding:utf-8 -*-
class
solution
:# s, pattern都是字串
defmatch
(self, s, pattern)
:# write code here
if s == pattern:
return
true
iflen
(pattern)
>
1and pattern[1]
=='*'
:if s and
(s[0
]==pattern[0]
or pattern[0]
=='.'):
return self.match(s,pattern[2:
])or self.match(s[1:
],pattern)
else
:return self.match(s,pattern[2:
])elif s and pattern and
(s[0
]== pattern[0]
or pattern[0]
=='.'):
return self.match(s[1:
],pattern[1:
])return
false
劍指offer 52 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 本題的主要思路如下 首先判...
劍指offer52 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但是與 aa.a 和 ab a 均不匹配 參考leetcode10.正規...
劍指offer(52)正規表示式匹配
問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配。思路 首先判斷兩...