题目:
题解:
func isMatch(s string, p string) bool {m, n := len(s), len(p)matches := func(i, j int) bool {if i == 0 {return false}if p[j-1] == '.' {return true}return s[i-1] == p[j-1]}f := make([][]bool, m + 1)for i := 0; i < len(f); i++ {f[i] = make([]bool, n + 1)}f[0][0] = truefor i := 0; i <= m; i++ {for j := 1; j <= n; j++ {if p[j-1] == '*' {f[i][j] = f[i][j] || f[i][j-2]if matches(i, j - 1) {f[i][j] = f[i][j] || f[i-1][j]}} else if matches(i, j) {f[i][j] = f[i][j] || f[i-1][j-1]}}}return f[m][n]
}