- 时间 92ms 击败82%
- 思路:双指针,一对一对比较。仅当的时候在s中匹配到d的某个完整的字符串时,首先标记存在这样的字符串(flag = true,也就是不必返回空字符串),然后比较当前字符串的个数是否大于max的大小,若大于则更新pos的位置和最大值个数,若相等则比较字典序的大小,保留字典序更大的字符串位置。
class Solution {
public:
string findLongestWord(string s, vector<string>& d) {
int pos = 0, max = 0;
bool flag = false;
int i = 0, j = 0,k = 0;
while(i < d.size()){
int j = 0;
for(int k = 0; k < s.length();k++){
if(s[k] == d[i][j]){
++j;
}
}
if(j == d[i].size()){
flag = true;
if(max < j){
max = j;
pos = i;
}
if(max == j){
if(d[pos][0]-'0' > d[i][0]-'0'){
pos = i;
}
}
}
++i;
}
if(flag == false) return "";
return d[pos];
}
};