python如何将重复的字符串值重新分配给新字符串


  • 我接受了一个字符串aabullc

  • newstring应该在循环后赋值aall,因为al是重复的

  • 字符串有一个以上的副本,如aaabullc应该返回aaall

    def rearrangeLetters(S):
    print(len(S))
    start = 0
    newstring = ""
    for i in range(start+1, len(S)):
    if(S[start] == S[i]):
    newstring+=S[i]
    print(newstring)
    start +=1
    

问题:

print(newstring)从未运行

这样做可能会对您有所帮助:

你可以很容易地把它转换成你的函数。

s = 'aabullc'
from itertools import groupby
result = ''
for k, g in groupby(s):
#print(k, ''.join(g))
ss = ''.join(g)
if len(ss) >=2:
result += ss    # aall 

对于较短的字符串,只需收集已看到的内容列表就可以轻松地完成此操作,对于较长的字符串,如果添加set

可能更有效。
def rearrange_letters(source_string):
result     = []     # collection to return
duplicated = set()  # efficient lookup for very long strings
for index, char in enumerate(source_string):
if char in duplicated:
result.append(char)
elif source_string[index:].count(char) > 1:
duplicated.add(char)
result.append(char)
return "".join(result)  # NOTE join is a method of string ""
>>> rearrange_letters("aabullc")
'aall'
>>> rearrange_letters("aaabcdc")
'aaacc'

试试这个:

def rearrangeLetters(S):
s = [S[i] for i in range(len(S))]
newstring = ""
for t in s:
if s.count(t) > 1:

newstring += t
return newstring

调用函数:

output = rearrangeLetters("aabullc")
print(output)
输出:

aall

最新更新