#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @param pattern string字符串 
# @return bool布尔型
#
class Solution:
    def match(self , str1 , pattern ):
        # write code here
        if not str or not pattern:
            return False
        m,n = len(str1),len(pattern)
        if pattern[0]== '*':
            return False
        mark = [[False]*(n+1) for i in range(m+1)]
        for i in range(m+1):
            for j in range(n+1):
                if i==0 :
                    if j==0:
                        mark[i][j] = True
                    elif pattern[j-1]!='*':
                        mark[i][j] = False
                    elif j>=2:
                        mark[i][j] = mark[i][j-2]
                    else:
                        mark[i][j] = False
                    continue
                if j==0:
                    mark[i][j] = False
                    continue
                if str1[i-1]==pattern[j-1] or pattern[j-1]=='.':
                    mark[i][j] = mark[i-1][j-1]
                    continue
                if pattern[j-1]=='*' and j>1:
                    if (pattern[j-2]=='.' or pattern[j-2]==str1[i-1]):
                        mark[i][j] = mark[i-1][j]
                    if not mark[i][j]:
                        mark[i][j] = mark[i][j-2]
#         for i in mark:
#             print(i)
        return mark[m][n]