跳到主要内容

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 - 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]

题解 3 - 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<_>>()
}
}