繁体   English   中英

如何将一个字符串添加到另一个字符串并删除重叠的部分?

[英]How do I add a string to another string and remove the overlapping part?

如何将一个字符串添加到另一个字符串中,如果该字符串是双精度字符串,则如何删除中间的一部分?

我真的不知道该怎么解释,但这就是我想要做的:

可以说

string1 = "abcde"

string2 = "cdefg"

我如何创建一个字符串为string1 + string2但仅包含“ cde”部分的变量?

我正在寻找类似的东西:

string3 = merge(string1, string2)

这将使string3为“ abcdefg”,而不是“ abcdecdefg”

我在Google上找不到它,所以这就是我在这里问的原因。

任何帮助将不胜感激 :)

您可以先检查是否存在重叠,然后仅附加不重叠的部分:

# Find overlap if there is any
for i in range(1, len(string2)):
    if string1.endswith(string2[:i]):
        k = i

# Concatenate strings:
string3 = string1 + (string2 if k is None else string2[k:])

甚至更简单,首先将k设置为零:

# Find overlap if there is any
k = 0
for i in range(1, len(string2)):
    if string1.endswith(string2[:i]):
        k = i

# Simply concatenate them
string3 = string1 + string2[k:]

我们可以查找s1s2的第一个字符的每次出现,并测试此事件中其余的s1是否是s2的开始。 我们需要从s1的开始到结束执行此操作,以确保获得最大的重叠。

import re

def fusion(s1, s2):
    for m in re.finditer(s2[0], s1):
        if s2.startswith(s1[m.start():]):
            return s1[:m.start()] + s2
    # no overlap found
    return s1 + s2


string1 = "abede"
string2 = "edefg" # overlap: 'ede'

print(fusion(string1, string2))
# abedefg

这可以通过以下简单的python set()实现。

>>> string1 = "abcde"
>>> string2 = "cdefg"
>>> string3 = string1 + string2
>>> print (''.join(sorted(set(string3))))
abcdefg

说明: set()删除重复的元素,对sorted()排序,然后join()将其重新组合在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM