雙指針系列-Leetcode 524. 通過刪除字母匹配到字典裏最長單詞

問題描述

給定一個字符串和一個字符串字典,找到字典裏面最長的字符串,該字符串可以通過刪除給定字符串的某些字符來得到。如果答案不止一個,返回長度最長且字典順序最小的字符串。如果答案不存在,則返回空字符串。

示例 1:

輸入:
s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]

輸出:
“apple”

解題報告

很明顯是雙指針法。遍歷 d 中的每一個字符串 d[i],將其與 s 進行比較。指針 p 指 向s的頭部,指針q指向 d[i] 的頭部。

實現代碼

class Solution {
public:
    string findLongestWord(string s, vector<string>& d) {
        string ans="";
        int p=0,q=0,maxLen=INT_MIN,size;
        for(int i=0;i<d.size();i++){
            p=0;
            q=0;
            size=d[i].size();
            if(size<maxLen||(size==maxLen&&ans.compare(d[i])<0)) continue;
            while(p<s.size()&&q<d[i].size()){
                if(s[p]==d[i][q]) q++;
                p++;
            }
            if(q==size){
                ans=d[i];
                maxLen=d[i].size();
            }
        }
        return ans;
    }
};

參考資料

[1] Leetcode 524. 通過刪除字母匹配到字典裏最長單詞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章