Sample:
pwwkew
Result:
['e', 'ew', 'k', 'ke', 'kew', 'p', 'pw', 'w', 'wk', 'wke']
思路:蛮力穷举,最外层循环遍历该字符串,内层循环从外层循环的当前值为起始,遍历到最后。
在外层循环中,每当当前i对应的s[i]不在列表中,就将s[i]放入列表。
在内层循环中,每当当前j对应的s[j]不在列表中,就将s[j]放入列表,并且增加一个字串,该字串是当找到上一个不在列表中的s[j]时,列表中所存放的最长字串 + s[j]。
比如pwwk,按程序正常执行,lst中的值增加步骤如下(假设外层循环只执行一次):
[p],[p,w,pw],[p,w,pw,k,pwk]。
然后内层循环每结束一次,就将记录内层循环字串的列表归零。
s = input()
lst = []
lst_res = []
length = len(s)
for i in range(length):
if s[i] not in lst:
lst.append(s[i])
for j in range(i + 1,length):
if s[j] not in lst:
lst.append(s[j])
lst.append(lst[-2] + s[j])
lst_res += lst
lst.clear()
lst_res = list(set(lst_res))
lst_res.sort()
print(lst_res)