题解 | 字符串通配符

字符串通配符

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
}

全部评论

相关推荐

04-25 19:29
已编辑
宁波大学 运营
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务