[英]My indices of evens python function only returns the first even number in a list. How to make it return the index of all even numbers in a list?
[英]My python code only return second element in the list. How to correct it?
谁能告诉我我的代码有什么问题? 它只返回列表的第二个元素。
我正在解决LeetCode 问题 720。字典中最长的单词。
给定一个表示英语词典的字符串数组,返回单词中最长的单词,该单词可以由单词中的其他单词一次构建一个字符。
如果有多个可能的答案,则返回字典顺序最小的最长单词。 如果没有答案,则返回空字符串。
示例 1:
输入:
words = ["w","wo","wor","worl","world"]
输出:
"world"
解释:单词“world”可以由“w”、“wo”、“wor”和“worl”一次构建一个字符。
示例 2:
输入:
words = ["a","banana","app","appl","ap","apply","apple"]
输出:
"apple"
解释:“apply”和“apple”都可以由字典中的其他词组成。 但是,“apple”在字典上比“apply”小。
到目前为止,这是我的代码:
class Solution:
def longestWord(self, words: List[str]) -> str:
words.sort(key=len)
def find(m,n):
if n==0 and len(words[n])!=1:
return Flase
if len(words[n])==1:
return 1
if words[m]==words[n]+words[m][-1]:
result=find(n,n-1)
else:
n=n-1
result=find(m,n)
for i in range(len(words)-1,0,-1):
j=i-1
res=find(i,j)
if res==1:
return words[i]
return ''
您的 find 函数的“核心”如下所示:
if words[m]==words[n]+words[m][-1]:
result=find(n,n-1)
else:
n=n-1
result=find(m,n)
将其替换为:
if words[m]==words[n]+words[m][-1]:
return find(n,n-1)
else:
return False
这让你更接近,但仍然存在一个问题:返回第一个匹配,但不一定是最小的字典。 为此,您需要更改sort
键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.