第31天。
今天的题目是Longest Word in Dictionary through Deleting:
很常规的题目。
因为题目要求返回的是最长的字符串,同时如果有多个解的话,就返回字典序最小的那个,所以我们先按要求进行一次排序。然后在 check 一下是否符合即可。代码如下:
1bool check(const string &s, const string &t) {2 int index = 0, i;3
4 for(i = 0; i < t.size(); ++i) {5 while(index < s.size() && s[index] != t[i]) index++;6 if (index == s.size()) break;7 else index++;8 }9
10 return i == t.size();11}12string findLongestWord(string s, vector<string>& d) {13 sort(d.begin(), d.end(),[](const string &s1, const string &s2) {14 if (s1.size() != s2.size()) return s1.size() > s2.size();15 else return s1 < s2;7 collapsed lines
16 });17
18 for(int i = 0;i < d.size(); i++) {19 if (check(s, d[i])) return d[i];20 }21 return "";22}