lc
lc524
预处理+双指针
class Solution
{
/*
如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串
*/
public:
string findLongestWord(string s, vector<string>& dictionary)
{
vector<string> d=dictionary;
sort(d.begin(),d.end(),[&](string& a,string& b)
{
int m=a.size(),n=b.size();
if(m==n)
return a<b;
return m>n;
});//预处理
auto check=[&](string& a,string& b)
{
int x=0,y=0,m=a.size(),n=b.size();
while(x<m && y<n)
{
if(a[x]==b[y])
x++;
y++;
}
return x==m;
};
for(auto& c:d)
{
if(check(c,s))
return c;
}
return "";
}
};