【问题标题】:Hash Tables: Ransom Note Hackerrank (Python)哈希表:赎金票据 Hackerrank (Python)
【发布时间】:2020-09-22 02:31:31
【问题描述】:

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

鉴于杂志上的文字和赎金信中的文字,如果他能准确地使用杂志上的整个文字复制他的赎金信,则打印 Yes;否则,打印编号。

例如,注释是“黎明攻击”。该杂志仅包含“黎明攻击”。杂志上的字都对,但大小写不匹配。答案是否定的。

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

HackerRank Question

def checkMagazine(magazine, note):
   c1 = Counter(magazine)
   c2 = Counter(note)

   if (c2.items() <= c1.items()):
      print('Yes')
   else:
      print('No')

【问题讨论】:

标签: python dictionary hashmap counter


【解决方案1】:

你不能只比较 c1.items() 和 c2.items()。不保证物品的顺序。尝试一个简短的示例并打印出 c1.items() 和 c2.items()。这不是元组比较的工作原理。

您可以改为:

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

它会单独检查出现在 c2 中的每个字母,并确保杂志中有那么多键。

您可能还想忽略空格!声称由于杂志空间不足而无法生成赎金票据,这很有趣。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多