class Solution:
"""
@param s: A string
@param p: A string includes "." and "*"
@return: A boolean
"""
def isMatch(self, s, p):
# write your code here
# 使用递归,每次比对第一个字符,或者*表示空的情况
# 先判断字符串是不是为空
if len(p) <= 0:
return len(s) <= 0 #如果p结束了,判断s是否结束,如果s也结束判断为true
# 标记一个boolean 用于判断第一个值是否相等,为.就直接默认相等
flagb = len(s)> 0 && (s[0] == p[0] || p[0] == '.')
# 判断含有*符号的情况,需要比对*表示空的情况或者*表示多个的情况
#
if(len(p) > 0 && p[1] == '*'):
return self.isMatch(s,p[2:]) || (flagb && self.isMatch(s[1:],p))
# 判断没有符号的情况,只需要比对第一个符号和递归后面的符号
# 如果含有.就直接跳过
else
return flagb && self.isMatch(s[1:],p[1:])