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

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等524通过删除字母匹配到字典里最长单词相关的知识,希望对你有一定的参考价值。


思路:找出s中包含的最长dictionary
外层遍历dictionary,内层双指针
如果遇到一个匹配的dictionary,就先比较长度,再比较字典序

class Solution:
    def findLongestWord(self, s: str, dictionary: List[str]) -> str:
        res=""
        for d in dictionary:
            i=j=0
            while i<len(d) and j<len(s):
                if d[i]==s[j]:
                    i+=1
                j+=1
            if i==len(d):
                if len(d)>len(res) or (len(d)==len(res) and d<res):
                    res=d
        return res
class Solution {
    public String findLongestWord(String s, List<String> dictionary) {
        String res="";
        for(String d : dictionary){
            int i=0,j=0;
            while(i<s.length() && j<d.length()){
                if(s.charAt(i)==d.charAt(j)){
                    j++;
                }
                i++;
            }
            if(j==d.length()){
                if(d.length()>res.length() || 
                (d.length()==res.length() && d.compareTo(res)<0)){
                    res=d;
                }
            }        
        }
        return res;
    }
}

也可以先将dictionary按长度和字典序排好,再遍历双指针

class Solution {
    public String findLongestWord(String s, List<String> dictionary) {
        Collections.sort(dictionary, (a,b)->{
            if (a.length() != b.length()) return b.length() - a.length();
            return a.compareTo(b);
        });
        int n = s.length();
        for (String d : dictionary) {
            int m = d.length();
            int i = 0, j = 0;
            while (i < n && j < m) {
                if (s.charAt(i) == d.charAt(j)) j++;
                i++;
            }
            if (j == m) return d;
        }
        return "";
    }
}

以上是关于leetcode中等524通过删除字母匹配到字典里最长单词的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—524. 通过删除字母匹配到字典里最长单词(双指针)—day38

LeetCode 524. 通过删除字母匹配到字典里最长单词(动态规划) / 695. 岛屿的最大面积 / 54. 螺旋矩阵(背)

LeetCode 524. Longest Word in Dictionary through Deleting (通过删除字母匹配到字典里最长单词)

leetcode 524. 通过删除字母匹配到字典里最长单词双指针,在不同字符串中同向查找

leetcode 524. 通过删除字母匹配到字典里最长单词双指针,在不同字符串中同向查找

leetcode 524. 通过删除字母匹配到字典里最长单词双指针在不同字符串中同向查找