【发布时间】:2015-01-19 03:45:37
【问题描述】:
有很多关于查找字符串排列的指南,但是我将如何为 ArrayList 中的每个元素执行此操作?鉴于:
ArrayList<String> list = [bob, cat, dog]
输出:
[bob, cat, dog]
[bob, dog, cat]
[dog, bob, cat]
[dog, cab, bob]
....
这是我拥有的一个代码,它将置换单个 单词:
public class permutations {
public ArrayList<String> performPermutations(String s){
ArrayList<String> arrayList = new ArrayList<String>();
if (s == null) {
return null;
}
else if (s.length() == 0) {
arrayList.add("");
return arrayList;
}
else {
for (int i = 0; i < s.length(); i++) {
ArrayList<String> remaining = performPermutations(s.substring(0, i) + s.substring(i + 1));
for (int j = 0; j < remaining.size(); j++) {
arrayList.add(s.charAt(i) + remaining.get(j));
}
}
return arrayList;
}
}
public static void main(String[] args) {
permutations p = new permutations();
ArrayList<String> arr = p.performPermutations("abc");
for(int i = 0; i<arr.size();i++) {
System.out.println(arr.get(i));
}
}
【问题讨论】:
-
排列大小为
N的 ArrayList 的元素与排列数字0 ... (N - 1)相同,因为如果你能做到这一点,你可以通过以下方式从数字排列转换为元素排列只是依次获取每个元素。对此进行一些研究,看看您是否可以通过这种方式找到答案。