1. 程式人生 > >[leetcode]524. Longest Word in Dictionary through Deleting

[leetcode]524. Longest Word in Dictionary through Deleting

[leetcode]524. Longest Word in Dictionary through Deleting


Analysis

好冷鴨~會下雪麼—— [每天刷題並不難0.0]

Given a string and a string dictionary, find the longest string in the dictionary that can be formed by deleting some characters of the given string. If there are more than one possible results, return the longest word with the smallest lexicographical order. If there is no possible result, return the empty string.
在這裡插入圖片描述


先對字典裡的單詞進行排序,是個二級排序,先按照長度排序,長度相同的再按照字典順序排。然後遍歷拍好序的字典,返回第一個能由s得到的單詞。這裡需要注意的是cmp函式需要宣告為static

Implement

class Solution {
public:
    string findLongestWord(string s, vector<string>& d) {
        sort(d.begin(), d.end(), cmp);
        for(string word:d){
            int len = word.size()
; int j = 0; for(char s1:s){ if(j < len && word[j] == s1) j++; if(j == len) return word; } } return ""; } static bool cmp(const string& s1, const string&
s2){ if(s1.size() == s2.size()){ int j=0; while(s1[j] == s2[j] && j<s1.size()) j++; if(j == s1.size()) return true; return s1[j]<s2[j]; } else return s1.size()>s2.size(); } };