題目描述
請實現乙個函式用來匹配包括』.『和』『的正規表示式。模式中的字元』.『表示任意乙個字元,而』'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配,但是與"aa.a"和"ab*a"均不匹配
# -*- coding:utf-8 -*-
class solution:
def match(self, s, pattern):
if not s and not pattern:
return true
if s and not pattern: # pattern為空就這2種情況
return false
if len(pattern) > 0 and pattern[1] == '*':
# 讓len(s) > 0在and 前面先判斷,否則s[0]在前會越界
if len(s) > 0 and (s[0] == pattern[0] or pattern == '.'): # s不為空時,,分s不為空和s為空兩種情況是為了防止s[i]非法越界
# 匹配乙個 or 匹配多個 or 忽略'*' 例:在s = 'ba' pattern = '.*a' 時,在'b'和'.*'匹配後要把'.*'忽略,讓'a'和'a'匹配,否則出錯
return self.match(s[1:], pattern[2:]) or self.match(s[1:], pattern) or self.match(s, pattern[2:])
else: # 當 '*' 匹配0個字元時, 即s為空時
return self.match(s, pattern[2:])
else: # pattern[1] != '*'時
if len(s) > 0 and (s[0] == pattern[0] or pattern == '.'):
return self.match(s[1:], pattern[1:])
else: # 不匹配
return false
方法二:
# -*- coding:utf-8 -*-
import re
class solution:
def match(self, ,s, pattern):
return true if re.fullmatch(pattern, s) else false
正規表示式 匹配
字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...
正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...
正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...