Python关于字符串的问题有人能看看吗

输入两个字符串s1和s2,把这两个字符串先后拼接起来成为一个长字符串,要求在拼接时s1尾部与s2头部最长的公共子串重叠部分只保留一份。例如:字符串分别为xwnmksdtg’和’tgkdmwt’时返回’xwnmksdtgkdmwt’。

给个推导式解法
s1 = input()
s2 = input()
#s1 = 'xwnmksdtg'
#s2 = 'tgkdmwt'
s3 = [s1+s2[len(s2[:i]):] for i in range(len(s2),-1,-1) if len(s1)>=len(s2[:i]) and s1[len(s1)-len(s2[:i]):] == s2[:i]][0]
print(s3)
def cat(s1,s2):
    for i in range(min(len(s1),len(s2)),-1,-1):
        if s1[-i:]==s2[:i]:
            break
    return s1+s2[i:]

s1,s2 = input().split()

print(cat(s1,s2))
#输入两个字符串s1和s2,把这两个字符串先后拼接起来成为一个长字符串,#xwnmksdtg tgkdmwt
#要求在拼接时s1尾部与s2头部最长的公共子串重叠部分只保留一份。例如:字符串分别为xwnmksdtg’和’tgkdmwt’时返回’xwnmksdtgkdmwt’。

s1,s2 = input().split(' ')
news = s1
for i in range(min(len(s1), len(s2))):
    if s1[-i:] == s2[:i]:
        news += s2[i:]
        break
print(news)