Leetcode 524. 通过删除字母匹配到字典里最长单词
思路:判断子序列
O(n)O(n)O(n)做法判断子序列,每一次比较答案,保存字典序最小的字符串
class Solution {
public:
bool check(string& a, string& b) {
int i = 0, j = 0;
while (i < a.size() && j < b.size()) {
if (a[i] == b[j]) i ++ ;
j ++ ;
}
return i == a.size();
}
string findLongestWord(string s, vector<string>& dictionary) {
string res;
for (auto& str : dictionary) {
if (check(str, s)) {
if (res.empty() || res.size() < str.size() || res.size() == str.size() && str < res)
res = str;
}
}
return res;
}
};
该博客介绍了如何解决LeetCode上的第524题,通过删除字母匹配字典中找到最长的单词。文章讨论了一种O(n)时间复杂度的解决方案,该方法检查每个字符串是否为给定字符串的子序列,并在过程中保存字典序最小的最长匹配词。算法使用了字符串比较和字典序的概念,对于字符串处理和算法设计有一定的参考价值。

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



