Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Python. Вывести общую часть двух строк.

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

Даны две строки с первой и второй надписью. Выведите общую часть.

По дате
По рейтингу
Аватар пользователя
Ученик
5мес
123456789101112
 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 '' 
 

Мне кажется это более простое решение

Аватар пользователя
Знаток
8мес

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])

Аватар пользователя
Знаток
12345678910
 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)