繁体   English   中英

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

[英]Keep one of two consecutive chars in a string

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

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

我的 function:

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

    b = b.join(a)   

    return b

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

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() function 来获得要跳过的长度(不如 next() 高效,但写起来更短):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM