题解 | 字符串通配符
字符串通配符
https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036
package main import ( "fmt" "strings" ) func main() { var s,p string fmt.Scan(&s) fmt.Scan(&p) s = strings.ToLower(s) p = strings.ToLower(p) n,m := len(s), len(p) f := make([][]bool, n+1) for i:=0;i<=n;i++{ f[i] = make([]bool, m+1) } for i := 0;i<n;i++{ if s[i]=='*'{ f[i+1][0]=true }else{ break } } f[0][0] = true for i:=1;i<=n;i++{ for j:=1;j<=m;j++{ if s[i-1]=='?'&&judge(p[j-1]) || s[i-1]==p[j-1]{ f[i][j] =f[i][j]||f[i-1][j-1] } if s[i-1]=='*'{ f[i][j] = f[i][j]||f[i-1][j] if judge(p[j-1]){ f[i][j] = f[i][j] || f[i][j-1] } } } } fmt.Println(f[n][m]) } func judge(a byte)bool{ if a>='0'&&a<='9' || a>='a'&&a<='z'{ return true } return false }