例:输入:[a,b,c]
输出:[[], [a], [a, b], [a, b, c], [a, c], [b], [b, c], [c]]
网上稍微查了一下,可能是查的方法不对,没找到对应的解法,于是只能自己来想。
考虑到输出格式,我决定直接做成二维数组输出
上代码(Java):
private static List<String> stringList = new LinkedList<>();
/**
* 递归方法
*/
private static List<String> test4(char[] ch, int p, StringBuilder prefix) {
// 需要控制台输出,解开此注释
// System.out.println(prefix);
// 将StringBuilder对象转换成String存入静态List
stringList.add(prefix.toString());
while (p < ch.length) {
// 使用StringBuilder对象拼接字符串
// 创建新的StringBuilder对象pre,防止递归结束时prefix被修改
StringBuilder pre = new StringBuilder();
// 将prefix的值和ch[q]的值拼接到pre
pre.append(prefix).append(ch[p]);
// 后移标记p
p++;
test4(ch, p, pre);