


Python. Вывести общую часть двух строк.
Оля вырезает трафареты для надписей на футболке. У неё есть две надписи. Чтобы сэкономить время, она отрезала конец первого трафарета, добавила к нему справа недостающие буквы и так получила второй трафарет. Общая часть должна быть максимально возможной длины.

Даны две строки с первой и второй надписью. Выведите общую часть.
def find_longest_match(s1: str, s2: str) -> str:
""" ищет наибольший совпадающий участок у двух строк """
# определение более длинной и короткой строки
long, short = (s1, s2) if len(s1) > len(s2) else (s2, s1)
# длина искомого участка начинается с полной длинны и до 1
for leng in range(len(short), 0, -1):
# начало проверяемого участка
for pos in range(len(short) - leng + 1):
if short[pos: pos + leng] in long:
return short[pos: pos + leng]
return ''
Мне кажется это более простое решение
s1=input()
s2=input()
k=0
for i in range(len(s1)):
if s1[len(s1)-i-1:]==s2[:i+1]:
k=i
if k!=0:
print(s1[len(s1)-k-1:])
s1=input()
s2=input()
a=''
for i in range(len(s2)+1):
if s2[:i]==s1[-i:]:
a=s2[:i]
if a!='':
print(a)
w1 = input()
w2 = input()
w2 = w2 + " "
l1 = len(w1)
l2 = len(w2)
m = []
for i in range(l2):
w = w2[:i]
k = w1.rfind(w)
if k != -1:
l = len(w)
m = m + [l]
n = max(m)
if w2[:n] == w1[l1-n:]:
print(w2[:n])

q = input()
w = input()
s = w
for i in w:
if i not in q:
w = w.replace(i, '')
for i in q:
if i not in s:
q = q.replace(i, '')
print(w)