赞
踩
题目:
题解:
- 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] = true
- for 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]
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。