0
我被要求编写一个程序来查找使用ArrayList的字符串及其子字符串的排列组合。我想出了一个解决方案,但它没有显示所需的输出。所以,如果有人能够对我进行一点启发,我将不胜感激。在Java中使用ArrayList的字符串及其子字符串的排列
的问题如下:
要计算一个字符串的所有排列和它的子串。例如,给定一个字符串S,例如“abc”,它应该输出字符串列表/数组, cab,cba]。你的代码应该把S作为输入,并为排列列表产生retlist。除了可以运行的代码之外,请优化代码以提高速度和内存的效率(我们将测试大型字符串,并且速度越快越好)。
正如在问题所述,重排列 “ABC” 的字符串的情况下,它应该打印如下结果:
[A,B,C,AB,BA,AC,CA, BC,CB,ABC,ACB,BAC,BCA,CAB,CBA]
我想出迄今:
import java.util.ArrayList;
import java.util.List;
public class Permutation {
public static void main(String[] args) {
enumerateSubString("abc");
}
public static List<String> enumerateSubString(String S_input) {
ArrayList<String> retlist = new ArrayList<String>();
int n = S_input.length();
if (n == 1) {
retlist.add(S_input);
} else {
for (int i = 0; i < n; i++) {
retlist.addAll(enumerateSubString(S_input.substring(0, i) + S_input.substring(i + 1, n)));
}
}
System.out.print(retlist);
return retlist;
}
}
的,我是越来越现在与T结果他以上代码:
[c] [b] [c,b] [c] [a] [c,a] [b] [a,b,c] A,b,A]
感谢
产生'ArrayList'的顺序是否重要? –
是的......输出应该与预期结果完全一致。 –
噢,好的。我可以编写一个给出所有排列顺序的代码片段,但顺序不会像你提到的那样相同。 –