forked from luliyucoordinate/Leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0010.go
26 lines (25 loc) · 766 Bytes
/
0010.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
func isMatch(s string, p string) bool {
m, n := len(s), len(p)
mem := make([][]bool, m + 1)
for i := 0; i <= m; i++ {
mem[i] = make([]bool, n + 1)
}
mem[0][0] = true
for i := 0; i <= m; i++ {
for j := 1; j <= n; j++ {
if p[j-1] == '*' {
if j > 1 {
mem[i][j] = mem[i][j-2]
}
if (i > 0 && j > 1 && s[i-1] == p[j-2]) || (j > 1 && p[j-2] == '.') {
mem[i][j] = mem[i][j] || i > 0 && mem[i-1][j]
}
} else {
if (i > 0 && s[i-1] == p[j-1]) || p[j-1] == '.' {
mem[i][j] = i > 0 && mem[i-1][j-1]
}
}
}
}
return mem[m][n]
}