How to merge two strings by overlapping their common suffix and prefix in Python

1 Answer

0 votes
def mergeOverlap(s1: str, s2: str) -> str:
    # If either string is empty, return the other
    if not s1:
        return s2
    if not s2:
        return s1

    # Find the largest suffix of s1 that is a prefix of s2
    max_overlap = 0
    max_len = min(len(s1), len(s2))

    for i in range(1, max_len + 1):
        if s1[-i:] == s2[:i]:
            max_overlap = i

    return s1 + s2[max_overlap:]


print("1", mergeOverlap("abc", "")) # abc
print("2", mergeOverlap("xyz", "abc")) # xyz abc
print("3", mergeOverlap("xab", "abc")) # xbc c
print("4", mergeOverlap("aababaab", "aab")) # aababaab
print("5", mergeOverlap("aabaaab", "aabc")) # aabaaab c
print("6", mergeOverlap("aabaaab", "bbc")) # aabaaab bbc
print("7", mergeOverlap("ababab", "ababc")) # ababab c
print("8", mergeOverlap("ababab", "babc")) # ababab c
print("9", mergeOverlap("abab", "aab")) # abab aab


'''
run:

1 abc
2 xyzabc
3 xabc
4 aababaab
5 aabaaabc
6 aabaaabbc
7 abababc
8 abababc
9 ababaab

'''

 



answered Jan 24 by avibootz

Related questions

...