题目描述:
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.
Example 1:
Input: s = "abpcplea", d = ["ale","apple","monkey","plea"]
Output: "apple"
Example 2:
Input: s = "abpcplea", d = ["a","b","c"]
Output: "a"
Note:
1. All the strings in the input will only contain lower-case letters.
2. The size of the dictionary won't exceed 1,000.
3. The length of all the strings in the input won't exceed 1,000.
先将字符串按照长度排序,然后遍历数组,判断目标字符串是否为当前字符串的子字符串。
class Solution {
public:
static bool comp(string a, string b)
{
if(a.size()>b.size()) return true;
else if(a.size()==b.size()&&a<b) return true;
else return false;
}
string findLongestWord(string s, vector<string>& d) {
sort(d.begin(),d.end(),comp);
for(auto t:d)
{
int i=0;
int j=0;
while(i<s.size()&&j<t.size())
{
if(s[i]==t[j])
{
i++;
j++;
}
else i++;
}
if(j==t.size()) return t;
}
return "";
}
};
本文介绍了一种算法,用于在给定字符串中寻找字典中最长的可由删除某些字符形成的字符串。通过示例解释了如何实现该算法,并提供了代码示例,包括字符串比较和查找过程。
80

被折叠的 条评论
为什么被折叠?



