题目描述:请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。
答题思路:递归思想求解
class Solution:
def isMatch(self, string: str, pattern: str) -> bool:
if string is None or pattern is None:
return False
if len(string) == 0 and len(pattern) == 0:
return True
if len(string) != 0 and len(pattern) == 0:
return False
a, b= '*', '.'
if len(pattern) >= 2 and pattern[1] == a:
if self.isMatch(string, pattern[2:]):
return True
if string and pattern[0] == b:
return self.isMatch(string[1:], pattern)
if string and string[0] == pattern[0]:
return self.isMatch(string[1:], pattern)
else:
if string and string[0] == pattern[0]:
return self.isMatch(string[1:], pattern[1:])
if string and pattern[0] == b:
return self.isMatch(string[1:], pattern[1:])
return False