如何解决哈希表:赎金票据HackerrankPython
哈罗德(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.items()。这不是元组比较的工作原理。
您可以改为执行以下操作:
all(c1[key] >= c2[key] for key in c2.keys())
分别检查c2中出现的每个字母,并确保弹匣中有很多钥匙。
您可能还想忽略空格!声称您无法生成赎金记录是很有趣的,因为杂志上没有足够的空间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。