java一个句子中所有可能的单词排列
我有一句话
I love java coding
我需要编写一个函数,返回句子中所有可能的单词排列的数组列表,即
I java love coding
I coding love java
.........
我已经把这个句子分成了一个列表,现在不知道如何有效地完成这项任务。
C++
有一个函数nextPermutaion()
,它提供了一个现成的解决方案。java是否提供了类似的功能。如果不是的话,什么是实现这一目标的有效方法
你可以在下面搜索框中键入要查询的问题!
我有一句话
I love java coding
我需要编写一个函数,返回句子中所有可能的单词排列的数组列表,即
I java love coding
I coding love java
.........
我已经把这个句子分成了一个列表,现在不知道如何有效地完成这项任务。
C++
有一个函数nextPermutaion()
,它提供了一个现成的解决方案。java是否提供了类似的功能。如果不是的话,什么是实现这一目标的有效方法
# 1 楼答案
这个问题相当于生成一组
n
数的所有可能排列,其中n
是句子中的单词数将句子转换为
ArrayList<String> words
个单词,然后生成数组{0,1,...,n-1}
的排列,以便每个排列arr
代表句子中单词的排列:words[arr[0]], ..., words[arr[n-1]]
至于计算一个数组的所有置换的问题,这里有很多这样的例子
下面是一个生成列表所有排列的代码示例(取自@YevgenYampolskiy的this answer)。该代码计算
List<Integer>
的所有置换,并且可以很容易地适应于计算List<String>
(ArrayList<String>
实现List<String>
)的置换