524.通过删除字符匹配到字典里最长单词**

class Solution {
public:
    string findLongestWord(string s, vector<string>& dictionary) {
        sort(dictionary.begin(),dictionary.end(),[&](string &a,string &b){
            if(a.size()==b.size())return a<b; //长度相等,按字符字典的升序排列
            return a.size()>b.size();//按长度降序排列
        });
        for(string &t:dictionary){
            if(issub(s,t)) return t;
        }
        return "";

    }
   bool issub(string s,string t){//判断t是否是s的子序列
        int n=s.size(),m=t.size();
        if(m>n) return false;//t长度大于s,一定不是子序列
        int i=0;//记录当前s中匹配到了哪个位置
        for(char ch:t){
            while(i<n&&s[i]!=ch)i++;
            if(i>=n) return false;
            i++;
        }
        return true;
    }
};
posted @ 2026-07-13 20:41  Acyclonepl  阅读(1)  评论(0)    收藏  举报