Python 在字符串中保留两个连续字符中的一个
因此,我想在函数中复制一个单词Python 在字符串中保留两个连续字符中的一个,python,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 第一步是确定单词开头和结尾之间的最长重叠。next()函数可
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
第一步是确定单词开头和结尾之间的最长重叠。next()函数可用于获取要跳过的字符数,方法是获取从最长子字符串到最短子字符串的第一个匹配,如果没有重叠,则默认为零。然后可以在单词的剩余部分执行重复(即跳过公共部分的长度) 您还可以使用max()函数获取要跳过的长度(效率不如next(),但写入的长度更短):
所以,当word是
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
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
def repeat(w,n):
skip = max(range(len(w)),key=lambda i:i*(w[:i]==w[-i:]))
return w + (n-1)*w[skip:]