/**
* 递归过程是一颗决策树,对每个字符要或者不要
*
* @param s
* @return
*/
public static List<String> recursionStr(String s) {
if (s == null) {
return Collections.emptyList();
}
char[] chars = s.toCharArray();
List<String> res = new ArrayList<>();
recursionStr(0, res, chars, "");
return res;
}
private static void recursionStr(int index, List<String> res, char[] chars, String path) {
//决策到叶子节点的时候,加入决策出来的结果
if (index == chars.length) {
if (!"".equals(path)) {
res.add(path);
}
return;
}
String no = path;
recursionStr(index + 1, res, chars, no);
String yes = path + String.valueOf(chars[index]);
recursionStr(index + 1, res, chars, yes);
}