請實現乙個函式用來匹配包括'.'和'*'的正規表示式。模式中的字元'.'表示任意乙個字元,而'*'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是與"aa.a"和"ab*a"均不匹配
每次分別在s和pattern中取乙個字元進行匹配,如果匹配,則匹配下乙個字元,否則,返回不匹配。
設匹配遞迴函式 match(s, pattern)。
如果模式匹配字元的下乙個字元是『*』:
•如果pattern當前字元和s的當前字元匹配,:有以下三種可能情況
如果pattern當前字元和和str的當前字元不匹配
pttern當前字元能匹配 str 中的 0 個字元:(str, pattern+2)
如果模式匹配字元的下乙個字元不是『*』,進行逐字元匹配。
』.』 和乙個字元匹配 match(str+1, pattern+1)
# -*- coding:utf-8 -*-
class solution:
# s, pattern都是字串
def match(self, s, pattern):
# write code here
if len(s) == 0 and len(pattern)==0:
return true
if len(s) > 0 and len(pattern)==0:
return false
if len(pattern)>1 and pattern[1] == "*":
if len(s)>0 and (s[0] == pattern[0] or pattern[0] == '.'):
return (self.match(s,pattern[2:]) or self.match(s[1:],pattern[2:]) or self.match(s[1:],pattern))
else:
return self.match(s,pattern[2:])
if len(s)>0 and (pattern[0]=='.' or pattern[0]==s[0]):
return self.match(s[1:],pattern[1:])
return false
劍指正規表示式
因為這個想得太亂了,mark在這邊記下來 note 涉及二元的只有 因此將 和其他分開即可。同時又是乙個遞迴方法,設定掃瞄終止條件。class solution3 s,pattern都是字串 問題可以分為兩個部分,匹配過了的,和沒有匹配的,可以拆分之後用遞迴來完成 每次匹配第一位時,都有三種情況 d...
Python 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 coding utf 8 ...
正規表示式匹配 python
coding utf 8 題目 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元 不包括空字元!而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ...