lc1023-驼峰式匹配

题目描述

  • 给定一个字符串数组和一个匹配串,判断每个字符串是否能跟匹配串匹配
  • 可以理解成匹配串按驼峰分割,能在字符串中依次匹配
  • 如 FoB -> Fo, B,可以匹配 FoxxxBxxx

示例

输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
输出:[true,false,true,true,false]
示例:
"FooBar" 可以这样生成:"F" + "oo" + "B" + "ar"
"FootBall" 可以这样生成:"F" + "oot" + "B" + "all"
"FrameBuffer" 可以这样生成:"F" + "rame" + "B" + "uffer"
输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa"
输出:[true,false,true,false,false]
输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT"
输出:[false,true,false,false,false]

题解

  • 思路
    • 数据范围不大,模拟即可
    • 模拟思路:双指针,相同的就往后走;不相等的,若字符串是小写,跳下一轮,若字符串是大写,必须匹配,不匹配就是 false
func camelMatch(queries []string, pattern string) []bool {
    res := make([]bool, len(queries))
    for i, q := range queries {
        res[i] = check(q, pattern)
    }
    return res
}

func check(a, b string) bool {
    j := 0
    for _, c := range a {
        if j < len(b) && byte(c) == (b)[j] {
            j ++
        } else if c <= 'Z' {
            return false
        }
    }
    return j == len(b)
}
posted @ 2025-09-10 21:32  余越  阅读(12)  评论(0)    收藏  举报