如何统计集合相似元素并高效获取两个字符串集合的交集?
两个集合找相似元素及单集合重复元素统计方法
一、高效获取两个集合的相似元素(交集)
你给出的v1、v2本身是集合类型,集合的核心特性就是支持高效的成员查找,直接用集合内置的交集操作是最高效的方式,时间复杂度为O(min(len(v1), len(v2)))。
以Python为例,有两种实现方式:
- 用运算符
&:v1 = {"ball", "water", "example"} v2 = {"example", "ball", "book"} s1 = v1 & v2 # 结果为 {'ball', 'example'} - 用集合方法
intersection():s1 = v1.intersection(v2)
其他编程语言也有类似内置方法,比如Java的retainAll()、C#的Intersect(),本质都是利用集合的哈希存储特性,避免低效的嵌套遍历对比。
二、统计单个集合中的重复元素
注意:标准集合类型本身不允许存在重复元素,如果你说的“单个集合”实际是指包含重复元素的序列(比如列表、数组),可以通过以下方式统计重复元素:
以Python为例,用collections.Counter统计元素出现次数,再筛选出次数大于1的元素:
from collections import Counter lst = ["ball", "water", "example", "ball", "water", "water"] counts = Counter(lst) # 获取所有重复元素(出现次数>1) duplicates = [item for item, cnt in counts.items() if cnt > 1] # 结果为 ['ball', 'water']
如果不用工具库,也可以手动遍历序列,用字典记录每个元素的出现次数后再筛选,不过效率不如Counter的优化实现。
内容的提问来源于stack exchange,提问作者B S
相关产品推荐
相关产品推荐

