写一个类,输入一个字符串和一个列表,列表包含了部分字符串字母可能的排练组合,输出包含部分中最长的组合,例如
print(longest_word_sequence("Green", {"Gn", "Gren", "Grean", "en"}))
print(longest_word_sequence("pythonexercises", {"py", "ex", "exercises","axercises"})) #输入
Gren
exercises #输出
字符串的排列组合还需要考虑参与排列的字母,例如apple的排列: "a", "ap", "al", "ae", "app", "apl", "ape", "ale", "appl", "appe", "aple", "apple", "p", "pp", "pl", "pe", "ppl", "ppe", "ple", "pple", "l", "le", "e", "".
我在编写的时候不知道如何实现不同字母参与的排列,比如abc,我不是很懂如何能实现,a,ab,ac这样,只能写出abc,cba等。希望能得到解答,谢谢!
题目不需要列出所有的组合吧?
不是只要找出“包含部分中最长的组合”吗?
def is_in_s(s:str,l:str)->bool:
s=list(s)
for i in list(l):
if i not in s:
return False
else:
s.remove(i)
return True
def longest_word_sequence(s:str,l:set)->str:
return max([i for i in l if is_in_s(s,i)],key=len)
def longest_word_sequence(s,lst)
return max([x for x in lst if s in x],key=len)