在字符串中保留两个连续字符中的一个

2024-09-28 23:43:59 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想在函数中复制一个单词n次,但我想消除连续字符

例如repete (amanha, 2) = "amanhamanha"

我的职能:

def repete(palavra,n):
    
    a = []
    b=""
    
    for n in range (0,n): 
        a.append(palavra)

    b = b.join(a)   

    return b

Tags: 函数inforreturndefrange字符单词
1条回答
网友
1楼 · 发布于 2024-09-28 23:43:59

第一步是确定单词开头和结尾之间的最长重叠。next()函数可用于获取要跳过的字符数,方法是获取从最长子字符串到最短子字符串的第一个匹配,如果没有重叠,则默认为零。然后可以在单词的剩余部分执行重复(即跳过公共部分的长度)

def repeat(w,n):
    skip = next((i for i in range(len(w)-1,0,-1) if w[:i]==w[-i:]),0)
    return w + (n-1)*w[skip:]

print(repeat("amanha",2))  # amanhamanha
print(repeat("abc",2))     # abcabc
print(repeat("abcdab",2))  # abcdabcdab

您还可以使用max()函数获取要跳过的长度(效率不如next(),但写入的长度更短):

def repeat(w,n):
    skip = max(range(len(w)),key=lambda i:i*(w[:i]==w[-i:]))
    return w + (n-1)*w[skip:]

相关问题 更多 >