【发布时间】:2021-06-24 16:26:03
【问题描述】:
对于我的字符串输入“aaa”,我希望答案是
[[],[a],[a,a],[a,a,a]]
我的代码:
import java.util.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String a = "aaa";
char arr[] = a.toCharArray();
Arrays.sort(arr);
List<List<Character>> big = new ArrayList<List<Character>>();
subset(arr, 0, big, new ArrayList<Character>(), true);
System.out.println(big);
}
static void subset(char arr[], int count, List<List<Character>> big,
List<Character> temp, boolean flag) {
if (count == arr.length) {
big.add(new ArrayList<Character>(temp));
return;
}
if (flag == false && arr[count] == arr[count - 1]) {
// logic for unique subset
subset(arr, count + 1, big, temp, false);
} else {
temp.add(arr[count]);
subset(arr, count + 1, big, temp, true);
temp.remove(temp.size() - 1);
subset(arr, count + 1, big, temp, false);
}
}
}
这段代码给了我这个输出:
[[a, a, a], [a, a], [a], []]
但我希望这样: 所需输出:
[[],[a],[a,a],[a,a,a]]
我为获取唯一子集而编写的逻辑也可以使用TreeSet 和HashSet 之类的集合来完成。
我尝试使用TreeSet,答案是排序顺序和唯一子集,但有一些额外的逗号。
如果有人能解决我的两个问题,那将非常有帮助。
【问题讨论】:
标签: java arrays sorting recursion subset