LeetCode 524. 通过删除字母匹配到字典里最长单词

简介: LeetCode 524. 通过删除字母匹配到字典里最长单词

524. 通过删除字母匹配到字典里最长单词


双指针

对列表里的每一个字母进行匹配测试,如果可以完全匹配,再与已有结果进行对比,找到最优解。

class Solution
{
public:
    string findLongestWord(string s, vector<string> &dictionary)
    {
        string res = "";
        for (auto &&word : dictionary)
        {
            int i = 0, j = 0;
            while (i < word.length() && j < s.length())
            {
                if (word[i] == s[j])
                {
                    i++;
                }
                j++;
            }
            if (i == word.length())
            {
                if (i > res.length() || (i == res.length() && word < res))
                {
                    res = word;
                }
            }
        }
        return res;
    }
};


排序

先将 dictionary 依据字符串长度的降序和字典序的升序进行排序,然后从前向后找到第一个符合条件的字符串直接返回即可。

class Solution
{
public:
    static bool compare(const string &a, const string &b)
    {
        if (a.length() == b.length())
        {
            return a < b;
        }
        else
        {
            return a.length() > b.length();
        }
    }
    string findLongestWord(string s, vector<string> &dictionary)
    {
        sort(dictionary.begin(), dictionary.end(), compare);
        for (auto &&i : dictionary)
        {
            cout << i << endl;
        }
        string res = "";
        for (auto &&word : dictionary)
        {
            int i = 0, j = 0;
            while (i < word.length() && j < s.length())
            {
                if (word[i] == s[j])
                {
                    i++;
                }
                j++;
            }
            if (i == word.length())
            {
                res = word;
                break;
            }
        }
        return res;
    }
};
目录
相关文章
|
4月前
|
存储 算法
LeetCode第49题字母异位词分组
LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
LeetCode第49题字母异位词分组
|
2月前
|
存储
Leetcode第49题(字母异位词分组)
LeetCode第49题要求将字符串数组中的字母异位词分组,可以通过将每个字符串排序后作为键存入哈希表,最后将哈希表中的值添加到结果列表中来实现。
18 1
|
2月前
|
算法
Leetcode第十七题(电话号码的字母组合)
这篇文章介绍了如何使用深度优先搜索(DFS)算法来解决LeetCode第17题——电话号码的字母组合问题,通过递归方法生成所有可能的字母组合。
25 0
Leetcode第十七题(电话号码的字母组合)
|
2月前
|
索引
【LeetCode 11】242.有效的字母异位词
【LeetCode 11】242.有效的字母异位词
19 0
【LeetCode 11】242.有效的字母异位词
|
2月前
|
算法
【LeetCode 52】17.电话号码的字母组合
【LeetCode 52】17.电话号码的字母组合
42 0
|
2月前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
22 0
|
2月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
24 0
|
4月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
4月前
|
算法
LeetCode第17题电话号码的字母组合
该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
LeetCode第17题电话号码的字母组合
|
4月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
55 4