1. 程式人生 > 其它 >leecode1023.駝峰式匹配

leecode1023.駝峰式匹配

技術標籤:leecode-字串

題目

駝峰式匹配
如果我們可以將小寫字母插入模式串 pattern 得到待查詢項 query,那麼待查詢項與給定模式串匹配。(我們可以在任何位置插入每個字元,也可以插入 0 個字元。)

給定待查詢列表 queries,和模式串 pattern,返回由布林值組成的答案列表 answer。只有在待查項 queries[i] 與模式串 pattern 匹配時, answer[i] 才為 true,否則為 false。

示例

輸入:queries = [“FooBar”,“FooBarTest”,“FootBall”,“FrameBuffer”,“ForceFeedBack”], pattern = “FB”

輸出:[true,false,true,true,false]
示例:
“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; } };