How to detect overlapping prefix–suffix between two lists (end of one list matches start of the other) in Python

2 Answers

0 votes
def overlap(a, b):
    max_len = min(len(a), len(b))
    for k in range(max_len, 0, -1):
        if a[-k:] == b[:k]:
            return a[-k:]
    return []


a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]

print(overlap(a, b))



'''
run:

[4, 5]

'''

 



answered Jan 19 by avibootz
0 votes
def overlap(a, b):
    for k in range(min(len(a), len(b)), 0, -1):
        if all(x == y for x, y in zip(a[-k:], b[:k])):
            return a[-k:]
    return []


a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]

print(overlap(a, b))



'''
run:

[4, 5]

'''

 



answered Jan 19 by avibootz
...