要求:给几个字符串,和s,找s中包含的字符串(按先长度后字典序),只要第一个
思路:先排序,然后双指针对应两个字符串,一个个匹配,时间最坏O(mn),空间复杂度是快排那个O(nlogn)
class Solution {
public:
static bool cmp(string &a,string &b){
return a.length()!=b.length() ? a.length()>b.length() : a<b;
}
string findLongestWord(string s, vector<string>& dictionary) {
sort(dictionary.begin(),dictionary.end(),cmp);
for(int i=0;i<dictionary.size();i++){
string dict=dictionary[i];
int dictindex=0;
for(int sindex=0;sindex<s.length();sindex++){
if(s[sindex]==dict[dictindex])
dictindex++;
}
if(dictindex==dict.length())
return dict;
}
return "";
}
};