如何实现两字符串移除共同字符后合并?示例:string1=aabcdef,string2=abcghi
解决思路与实现代码
核心思路
这个需求拆解起来很简单,核心就是三步走:
- 提取公共字符:先找出两个字符串里都存在的字符(用集合处理最省心,交集操作和成员查询效率都很高)
- 过滤原字符串:分别遍历两个原字符串,只保留不在公共字符集合里的字符
- 合并结果:把两个过滤后的字符串拼接起来,就是最终的
final
代码实现(Python)
string1 = "aabcdef" string2 = "abcghi" # 1. 获取两个字符串的公共字符集合 common_chars = set(string1) & set(string2) # 这里得到的是 {'a', 'b', 'c'} # 2. 过滤两个字符串,移除所有公共字符 filtered_string1 = ''.join([char for char in string1 if char not in common_chars]) filtered_string2 = ''.join([char for char in string2 if char not in common_chars]) # filtered_string1 是 "def",filtered_string2 是 "ghi" # 3. 合并得到最终字符串 final = filtered_string1 + filtered_string2 print(final) # 输出: defghi
关于你给出的示例结果说明
你提到最终结果是adefghi,这和标准的“移除所有公共字符”逻辑不符——因为a是两个字符串的公共字符,按照需求应该被移除。如果确实需要得到这个结果,那需求可能是“移除仅在两个字符串中都出现的b和c,保留a”,这种情况下可以调整过滤逻辑:
# 只移除指定的公共字符 b、c target_chars = {'b', 'c'} filtered_string1 = ''.join([char for char in string1 if char not in target_chars]) filtered_string2 = ''.join([char for char in string2 if char not in target_chars]) final = filtered_string1 + filtered_string2 print(final) # 输出: adefghi
建议先确认清楚具体需求:到底是移除所有公共字符的实例,还是有其他特殊规则~
内容的提问来源于stack exchange,提问作者MaTHwoG
相关产品推荐
相关产品推荐

