python - 此代码适用于我的计算机,但不适用于 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
解决方案
当单词不在开头时,此代码中存在算法错误。
例如,此代码将认为“rat”是“mouserat”的根。
但是,如果您更改该行:
if d in slist[i]:
至
if slist[i].startswith(d):
当我在 leetcode 中测试时,它对我来说很好。
推荐阅读
- css - 设置转换后图像的宽度和高度:旋转
- angular - 使用可观察的管道没有得到预期的结果
- angular - 角度中的 setTimeout 函数错误
- java - Azure 函数 javax.xml.bind.JAXBException
- c# - 从 C# 中的两个字符串变量转换为 DateTime
- c# - 为什么我们不能将对象直接分配给返回相同类型的方法?
- ios - 在 UIViewController 之间传递数据的“更干净”的方式是什么
- python - 如何检测上半身从肩部到肚脐点?
- python - sample_distorted_bounding_box() 至少需要 2 个参数(给定 3 个)
- c++ - 具有意外结果的 c++ 闭包