我想获得一个返回输入字符串所有排列的方法。我在网上搜索了一下,发现大部分都和Robert Sedgewick的代码类似:http: //introcs.cs.princeton.edu/java/23recursion/Permutations.java.html
但是,我想返回排列,而不是打印它们。Robert Sedgewick 的代码复制到这里:
public class Permutations {
// print N! permutation of the characters of the string s (in order)
public static void perm1(String s) { perm1("", s); }
private static void perm1(String prefix, String s) {
int N = s.length();
if (N == 0) System.out.println(prefix);
else {
for (int i = 0; i < N; i++)
perm1(prefix + s.charAt(i), s.substring(0, i) + s.substring(i+1, N));
}
}
public static void main(String[] args) {
perm1("abcd");
}
}
Robert Sedgewick 自己编写的代码如下:
import java.util.ArrayList;
public class Test {
public static ArrayList<String> permute(String prefix, String s){
int len = s.length();
ArrayList<String> list = new ArrayList<String>();
if(s.length() == 0)
list.add(prefix);
else
for(int i = 0; i < len; i++)
permute(prefix + s.charAt(i), s.substring(0, i) + s.substring(i+1, len));
return list;
}
public static void main(String[] args) {
String str = "abcd";
ArrayList<String> array = permute("", str);
System.out.print(array.size());
}
}
但是我的代码没有返回排列。它什么也不返回。我不知道为什么。谁能帮我?