打印一个字符串的全部子序列 要求不要出现重复字面值的子序列
public static List<String> subNoRepeat(String s) {
char[] str = s.toCharArray();
String path = "";
HashSet<String> set = new HashSet<>();
process(str, 0, set, path);
List<String> ans = new ArrayList<>();
for (String cur : set) {
ans.add(cur);
}
return ans;
}
private static void process(char[] str, int index, HashSet<String> set, String path) {
if (index == str.length) {
set.add(path);
return;
}
String no = path;
process(str, index + 1, set, no);
String yes = path + String.valueOf(str[index]);
process(str, index + 1, set, yes);
}
C++ | Java |
---|