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

Leetcode 524

力扣

题目:

给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。

如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。

示例:

题解:

方法:双指针 

分析:双指针方法,主要可以用于遍历数组,协同工作:转载他人github整理相关题目

CS-Notes/Leetcode 题解 - 双指针.md at master · CyC2018/CS-Notes · GitHub

该问题,用双指针进行序列的匹配。同时,设置一个longest字符串用来记录最长子序列,或者最小,在python中可以直接用"<" 对字符串进行ascii码的比较;java中可以使用compareTo

def findLongestWord(self, s: str, dictionary: List[str]) -> str:
        longest = ""
        for p in dictionary:
            k,j = 0,0
            while j<len(p) and k<len(s):
                if s[k] == p[j]:
                    j+=1
                k+=1
            if j == len(p):
                if len(p)>len(longest) or (len(p)==len(longest)and p<longest):
                    longest = p

        return longest

Guess you like

Origin blog.csdn.net/weixin_44423625/article/details/121732116