leecode1023.駝峰式匹配
阿新 • • 發佈:2020-12-14
技術標籤:leecode-字串
題目
駝峰式匹配
如果我們可以將小寫字母插入模式串 pattern 得到待查詢項 query,那麼待查詢項與給定模式串匹配。(我們可以在任何位置插入每個字元,也可以插入 0 個字元。)
給定待查詢列表 queries,和模式串 pattern,返回由布林值組成的答案列表 answer。只有在待查項 queries[i] 與模式串 pattern 匹配時, answer[i] 才為 true,否則為 false。
示例
輸入:queries = [“FooBar”,“FooBarTest”,“FootBall”,“FrameBuffer”,“ForceFeedBack”], pattern = “FB”
示例:
“FooBar” 可以這樣生成:“F” + “oo” + “B” + “ar”。
“FootBall” 可以這樣生成:“F” + “oot” + “B” + “all”.
“FrameBuffer” 可以這樣生成:“F” + “rame” + “B” + “uffer”.
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/camelcase-matching
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
思路
採用雙指標進行匹配
程式碼
class Solution {
public:
bool check(string str, string pattern){
int t1 = 0, t2 = 0;
while(t1 < str.size() && t2 < pattern.size()){
if(str[t1] == pattern[t2]) t1++, t2++;
else if(str[t1] >= 'A' && str[t1] <= 'Z') return false;//未匹配上且出現了大寫字母
else t1++;
}
if(t2 < pattern.length()) return false;//pattern沒有匹配完,返回false
while(t1 < str.length()){//pattern匹配完了,但是後面s中可能還會有大寫字母
if(str[t1] >= 'A' && str[t1] <= 'Z')
return false;
t1++;
}
return true;
}
vector<bool> camelMatch(vector<string>& queries, string pattern) {
vector<bool> ans;
for(auto s : queries) ans.push_back(check(s, pattern));
return ans;
}
};