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