题目:
题解:
本题虽然在前缀树的tag中,但是感觉和前缀树也没啥关系啊!如果各位有用前缀树做出来的,告诉我下,谢谢。
算法:遍历查询项的每个单词,然后与模式串中的字符匹配,分为三种情况:
- 1)查询项的大写字符与模式串的大写字符匹配,两个字符串继续向后匹配
- 2)查询项的大写字符与模式串的大写字符部匹配,表示查询项与模式串匹配不成功(因为查询串不能除了模式串的大写字符)
- 3)其他情况,模式串移动到下一个字符,继续下一次循环
代码如下:
class Solution {
public:
//解法:暴力法,遍历出每个query,然后于pattern比较就好了
vector<bool> camelMatch(vector<string>& queries, string pattern) {
vector<bool> result;
int psize=pattern.size();
for(const auto& query:queries){
int i=0,j=0,qsize=query.size();
while(i<qsize){
if(j<psize&&query[i]==pattern[j]){++i;++j;}
else if(query[i]>='A'&&query[i]<='Z')break;//查询串有多余的大写字符,直接退出
else ++i;
}
//模式串和查询串匹配成功
if(i>=qsize&&j>=psize)result.push_back(true);
else result.push_back(false);
}
return result;
}
};