如何比较两个字符串并输出无重复公共字符?代码输出重复问题求助
解决字符串公共字符去重问题
嘿,我懂你现在的困扰啦——你想提取两个字符串的公共字符,但不希望结果里出现重复的字符,比如输入a = "baac"、b = " fdeabac "时,你要的是"abc"或"bca"这类无重复的结果,而不是重复的"aabaac"。
核心思路
要实现这个需求,关键是抓住「去重」和「找公共」两个核心点:
- 先把每个字符串里的字符去重,得到各自的唯一字符集合
- 取两个集合的交集,这个交集就是同时存在于两个字符串里的所有唯一公共字符
- 最后把交集转成字符串即可(顺序可以按需调整)
具体代码示例(以Python为例)
a = "baac" b = " fdeabac " # 先清理字符串中的空格(如果有需要),再转成集合自动去重 unique_a = set(a.replace(" ", "")) # 去掉所有空格,若只需清理首尾用strip() unique_b = set(b.replace(" ", "")) # 计算两个集合的交集,得到公共的唯一字符 common_unique_chars = unique_a & unique_b # 等价于unique_a.intersection(unique_b) # 把集合转成字符串,这里用sorted让结果按字母顺序排列,也可直接join(集合无序) result = ''.join(sorted(common_unique_chars)) print(result) # 输出: "abc"
为什么这个方法有效?
集合(Set)的特性就是自动去重,而且集合的交集操作能直接筛选出同时存在于两个集合中的元素。这样就完美避开了重复计数、重复添加字符的问题,一步到位得到你想要的无重复公共字符。
如果不需要按固定顺序输出,直接''.join(common_unique_chars)就可以,结果可能是"bca"或者其他顺序,但都是符合要求的无重复公共字符组合。
内容的提问来源于stack exchange,提问作者user8902801
相关产品推荐
相关产品推荐

