Hash Tables: Ransom Note Hackerrank (Python)



Harold是一个绑匪,他写了一张赎金单,但现在他担心这会通过他的笔迹追溯到他。他找到了一本杂志,想知道是否可以从中剪下完整的单词,并用它们制作一个无法追踪的赎金单复制品。他的笔记中的单词区分大小写,他必须只使用杂志上的完整单词。他不能使用子串或串联来创建他需要的单词。

考虑到杂志上的文字和赎金单上的文字,如果他能准确地使用杂志上的全部文字复制他的赎金单,请打印"是";否则,打印编号

例如,音符是";黎明出击";。该杂志仅包含";黎明时分的进攻";。这本杂志用词恰当,但有一个不匹配的地方。答案是否定的。

我有5个测试用例失败了,我不知道为什么。欢迎任何帮助。谢谢

黑客银行问题

def checkMagazine(magazine, note):
c1 = Counter(magazine)
c2 = Counter(note)
if (c2.items() <= c1.items()):
print('Yes')
else:
print('No')

不能只比较c1.items((和c2.items。不能保证项目的顺序。试着举一个简短的例子,打印出c1.items((和c2.iitems((。这不是元组比较的工作方式。

你可以做一些类似的事情:

all(c1[key] >= c2[key] for key in c2.keys())

它单独检查c2中出现的每个字母,并确保弹匣中有那么多钥匙。

您可能还想忽略空格!如果说你因为杂志上没有足够的空间而无法生成赎金单,那将是一件有趣的事。

我知道有人说不要使用异常作为控制结构,但这是最优雅的异常。。。双关语:(

def checkMagazine(magazine, note):
for word in note:
try:
magazine.remove(word)
except:
print("No")
return
print("Yes")

最新更新