一、题目介绍
题目:给定k个字符串数组,从这k个数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合。(不要使用库方法)
样例:
input : [[“a”, “b”, “cd”], [“de”], [“e”, “f”]]
output : [“adee”, “adef”, “bdee”, “bdef”, “cddee”, “cddef”]
二、解题思路
首先需要分析题目,任选某个字符串按顺序拼接得出的结果都是一样的,所以只需要当做从第一个数组开始顺序组合即可,可以看出这是第k个数组跟第k-1数组进行组合,所以这里可以用递归,代码如下:
# 递归函数
def recursion(list1, list2):
result = [[x, y] for x in list1 for y in list2]
return result
# 先让前两个数字进行组合生成初始数组
inp = [["a", "b", "c"], ["de"], ["e", "f"], ["f", "v"], ["o"]]
reset = []
for r in recursion(inp[0], inp[1]):
s = r[0] + r[1]
reset.append(s)
# 开始递归,获得最终结果
for i in range(2, len(inp)):
result = recursion(reset, inp[i])
reset = []
for r in result:
s = r[0] + r[1]
reset.append(s)
print(reset)