| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- package main
 
- // ? any character; * any chatacter with any length
 
- func isMatch(s string, p string) (ans bool) {
 
- 	m, n := len(s), len(p)
 
- 	match := make([][]bool, m+1)
 
- 	for i := range match {
 
- 		match[i] = make([]bool, n+1)
 
- 	}
 
- 	match[0][0] = true
 
- 	for i := 1; i <= n; i++ {
 
- 		if p[i-1] == '*' {
 
- 			match[0][i] = true
 
- 		} else {
 
- 			break
 
- 		}
 
- 	}
 
- 	for y := 1; y <= m; y++ {
 
- 		for x := 1; x <= n; x++ {
 
- 			if s[y-1] == p[x-1] || p[x-1] == '?' {
 
- 				match[y][x] = match[y-1][x-1]
 
- 			} else if p[x-1] == '*' {
 
- 				// Star matches empty string or matches next character
 
- 				match[y][x] = match[y][x-1] || match[y-1][x]
 
- 			}
 
- 		}
 
- 	}
 
- 	return match[m][n]
 
- }
 
- // func main() {
 
- // 	println(isMatch("", ""))
 
- // 	println(isMatch("", "**"))
 
- // 	println(isMatch("aa", "a?"))
 
- // 	println(isMatch("aaa", "*"))
 
- // 	println(isMatch("cab", "c*b"))
 
- // 	println(isMatch("abc", "*c*a"))
 
- // }
 
 
  |