双指针
如果匹配则需要排除以下几种情况
1. 当前pattern为小写字母时,碰到大写字母则不满足,不再继续匹配该项设为false
2. 当前pattern为大写字母时,需要查看大写字母是否是当前大写字母,如果不是则不再继续匹配该项设为false
3. 如果以上两个条件皆不满足且pattern内所有字母匹配完毕,那么需要查看未匹配完的字符串中是否还有大写字母,如果有则设为false
4. 如果以上三种情况皆满足的情况下设为true,否则为false
class Solution {
public:
vector<bool> camelMatch(vector<string>& queries, string pattern) {
vector<bool> result;
for(auto q:queries){
int i= 0;
int j = 0;
while(i<q.size()&&j<pattern.size()){
if(q[i] == pattern[j]){
j++;
}else if(pattern[j]>='a'&&pattern[j]<='z'&&q[i]>='A'&&q[i]<='Z'){
break;
}else if(pattern[j]>='A'&&pattern[j]<='Z'&&q[i]>='A'&&q[i]<='Z'&&pattern[j]!=q[i]){
break;
}
i++;
}
int flag = 1;
while(i<q.size()){
if(q[i]>='A'&&q[i]<='Z'){
flag = 0;
}
i++;
}
if(j == pattern.size()&&flag){
result.push_back(true);
}else{
result.push_back(false);
}
}
return result;
}
};