題目描述
請實現乙個函式用來匹配包括』.『和✳的正規表示式。模式中的字元』.'表示任意乙個字元,而✳表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab✳ac✳a"匹配,但是與"aa.a"和"ab✳a"均不匹配
思路:
根據題意,利用遞迴,分為兩類:
第一、當前pattern的下乙個元素為✳時,
若當前pattern元素為』.『時,可與任意元素匹配,此時可以將s和pattern都向後一位尋找、將pattern向後兩位尋找、將s向後一位尋找。
否則將pattern向後兩位尋找。
第二、當前pattern的下乙個元素不是✳時,則按位匹配。
大概思路是這樣,但是存在s=』』,pattern=』.✳』等等情況,要注意陣列會不會越界。
# -*- coding:utf-8 -*-
class
solution
:# s, pattern都是字串
defmatch
(self, s, pattern)
:# write code here
ifnot s and
not pattern:
return
true
ifnot pattern:
return
false
iflen
(pattern)==1
:iflen(s)==1
and(s[0]
==pattern[0]
or pattern[0]
=='.'):
return
true
else
:return
false
else:if
not s and pattern[1]
=='*'
andlen
(pattern)==2
:return
true
if pattern[1]
=='*'
:if s and
(pattern[0]
==s[0]
or pattern[0]
=='.'):
return self.match(s[1:
],pattern)
or self.match(s[1:
],pattern[2:
])or self.match(s,pattern[2:
])else
:return self.match(s,pattern[2:
])else
:if pattern[0]
==s[0]
or pattern[0]
=='.'
:return self.match(s[1:
],pattern[1:
])else
:return
false
劍指offer 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但是與 aa.a 和 aba 均不匹配 由於只涉及兩種正規表示式的匹配,...
劍指Offer 正規表示式匹配
題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 實現 class s...
劍指offer 正規表示式匹配
題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配.分析 觀察模式串中第...