LeetCode44-通配符匹配(Golang)
LeetCode-44:通配符匹配
题意:
有字符串s,和模式串p,规定匹配规则如下:
- 模式串 p 中的 '*' ,可以与 s 中任意长度的任意字符匹配
- 模式串 p 中的 '?' ,可以与 s 中的一个任意字符匹配
判断给定的 s 和 p 能否匹配
思路:
- 利用动态规划进行求解
代码(Golang):
func isMatch(s string, p string) bool { var dp [][]bool=make([][]bool,len(s)+1) for i:=0;i<=len(s);i++{ dp[i]=make([]bool,len(p)+1) dp[i][0]=false } dp[0][0]=true for i:=0;i<len(p);i++{ if p[i]=='*'{ dp[0][i+1]=true }else{ break } } for i:=0;i<len(s);i++{ for j:=0;j<len(p);j++{ ii,jj:=i+1,j+1 if s[i]==p[j] || p[j]=='?'{ dp[ii][jj]=dp[i][j] }else if p[j]=='*'{ dp[ii][jj]=dp[i][jj] || dp[ii][j] }else { dp[ii][jj]=false } } } return dp[len(s)][len(p)]}