标签:ransomNote 字符 Counter 用法 magazine collections print 赎金
Python collections.Counter()用法
Counter 计数器,最主要的作用就是计算“可迭代序列中”各个元素(element)的数量
统计“可迭代序列”中每个元素的出现的次数
#首先引入该方法
from collections import Counter
# 对列表作用
list_01 = [1, 9, 9, 5, 0, 8, 0, 9]
print(Counter(list_01)) # Counter({9: 3, 0: 2, 1: 1, 5: 1, 8: 1})
# 对字符串作用
temp = Counter('abcdeabcdabcaba')
print(temp) # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
# 以上其实是两种使用方法,一种是直接用,一种是实例化以后使用,如果要频繁调用的话,显然后一种更简洁
Counter(a)-Counter(b)
from collections import Counter
a = 'abbacde'
b = 'abcdefg'
print(Counter(a)) # Counter({'a': 2, 'b': 2, 'c': 1, 'd': 1, 'e': 1})
print(Counter(b)) # Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1})
print(Counter(a)-Counter(b)) # Counter({'a': 1, 'b': 1})
print(Counter(b)-Counter(a)) # Counter({'f': 1, 'g': 1})
# Counter(a)-Counter(b)= Counter({'a': 2-1, 'b': 2-1, 'c': 1-1, 'd': 1-1, 'e': 1-1})
# =Counter({'a': 1, 'b': 1, 'c': 0, 'd': 0, 'e': 0})=Counter({'a': 1, 'b': 1})
# Counter(b)-Counter(a)= Counter({'a': 1-2, 'b': 1-2, 'c': 1-1, 'd': 1-1, 'e': 1-1, 'f': 1, 'g': 1})
# =Counter({'a': -1, 'b': -1, 'c': 0, 'd': 0, 'e': 0, 'f': 1, 'g': 1})=Counter({'f': 1, 'g': 1})
# Counter(b)-Counter(a)中的某字符<=0时去掉该字符
赎金信(字符串a是否能被字符串b中字符的组成)
# 给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。
# 如果可以构成,返回 true ;否则返回 false 。
# magazine 中的每个字符只能在 ransomNote 中使用一次。
from collections import Counter
ransomNote = 'ascx1234'
magazine = 'asxzc1234567asx'
if len(ransomNote) > len(magazine):
print(False)
print(not Counter(ransomNote) - Counter(magazine))
# Counter(ransomNote) 统计ransomNote中字出现的次数
# Counter(magazine) 统计magazine中字出现的次数
# Counter(ransomNote) - Counter(magazine))的结果为Counter类型
# 当Counter(ransomNote) - Counter(magazine)为空时证明ransomNot中的字符能在magazine找到
# Counter类型为空时转换成布尔值为False,根据题意可知杂志中的字符可以构成赎金信返回True,所以要在前面加not
标签:ransomNote,字符,Counter,用法,magazine,collections,print,赎金 来源: https://blog.csdn.net/qq_45751796/article/details/121712954
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。