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")