1023.驼峰式匹配
链接:1023.驼峰式匹配
难度:Medium
标签:字典树、数组、双指针、字符串、字符串匹配
简介:如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。
题解 1 - cpp
- 编辑时间:2023-04-14
- 执行用时:4ms
- 内存消耗:6.9MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
    vector<bool> camelMatch(vector<string>& queries, string pattern) {
        auto check = [&](string &s) {
            int pidx = 0;
            for (int i = 0; i < s.size(); i++) {
                if (pidx < pattern.size() && s[i] == pattern[pidx]) pidx++;
                else if (isupper(s[i])) return false;
            }
            return pidx == pattern.size();
        };
        vector<bool> res;
        for (auto &q : queries) res.push_back(check(q));
        return res;
    }
};
题解 2 - rust
- 编辑时间:2023-04-14
- 内存消耗:2MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn camel_match(queries: Vec<String>, pattern: String) -> Vec<bool> {
        let pattern = pattern.chars().collect::<Vec<_>>();
        queries
            .into_iter()
            .map(|s| {
                let mut pidx = 0;
                for c in s.chars() {
                    if pidx < pattern.len() && c == pattern[pidx] {
                        pidx += 1
                    } else if c.is_uppercase() {
                        return false;
                    }
                }
                pidx == pattern.len()
            })
            .collect::<Vec<_>>()
    }
}
题解 3 - python
- 编辑时间:2023-04-14
- 执行用时:36ms
- 内存消耗:14.8MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def camelMatch(self, queries: List[str], pattern: str) -> List[bool]:
        def check(s: str):
            pidx = 0
            for c in s:
                if pidx < len(pattern) and c == pattern[pidx]:
                    pidx += 1
                elif c.isupper():
                    return False
            return pidx == len(pattern)
        return [check(s) for s in queries]