繁体   English   中英

我的 python 代码只返回列表中的第二个元素。 如何纠正它?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM