记得有一次想起一个四个字的昵称,于是在一张纸上写下所有喜欢的字,看看字之间的排列组合能不能组成比较好的昵称ヾ§  ̄▽)ゞ2333333, 当时刚学编程,所以也在想怎么用代码实现多个字排列组合出所有的四个字,当时冥思苦想用了4个for循环实现了。
最近在读《Java实战(第2版)》看到一道题:
答案中的代码可以将2个集合进行组合,于是想到既然2个集合可以组合,哪更多的集合应该也可以,用这种方式应该也能实现多个字的排列组合,一试果然能实现,代码示例:
List
总结下规律,结果为N个字的组合,需要N-1个flatMap,既然这样,应该也可以将N当参数传递,想生成几个字的排列组合就生成几个字的,代码实现:
有重复字符串的排列组合:
/**
无重复字符串的排列组合:
/**
测试:
List
力扣:面试题 08.07. 无重复字符串的排列组合