首页 > 解决方案 > 此代码适用于我的计算机,但不适用于 leetcode

问题描述

我正在尝试解决这个leetcode问题。当我在笔记本电脑上运行它时输出很好,但当我将它提交给 leetcode 时却不行。花了一个小时还是想不通。夫妻更多的眼睛肯定会有所帮助。

class Solution28(object):
def replaceWords(self, dict, sentence):
    """
    :type dict: List[str]
    :type sentence: str
    :rtype: str
    """
    dict=sorted(dict)
    slist=sentence.split(' ')
    #print slist
    n = len(slist)
    for i in xrange(n):
        for d in dict:
            if d in slist[i]:
                slist[i]=d
                break
            elif d > slist[i]:
                break
    return " ".join(slist)

obj = Solution28()
print obj.replaceWords(["cat", "bat", "rat"],"battery cattle was rattled by the battery")
####o/p from my laptop: bat cat was rat by the bat
####o/p in leetcode: battery cat was rat by the battery

标签: pythonalgorithmpython-2.7

解决方案


当单词不在开头时,此代码中存在算法错误。

例如,此代码将认为“rat”是“mouserat”的根。

但是,如果您更改该行:

if d in slist[i]:

if slist[i].startswith(d):

当我在 leetcode 中测试时,它对我来说很好。


推荐阅读