-
我接受了一个字符串
aabullc
-
newstring应该在循环后赋值
aall
,因为a
和l
是重复的 -
字符串有一个以上的副本,如
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