【发布时间】:2016-03-29 22:50:42
【问题描述】:
所以我正在尝试创建一种方法来生成给定字符串的幂集。到目前为止,我想出了这个错误地输出“[abc,bc,c,b,ac,c,a,ab,b,a]”的方法。
public static ArrayList<String> powerSet(String s){
ArrayList<String> set = new ArrayList<String>();
if(!s.isEmpty())
set.add(s);
for(int i=0; i<s.length();i++){
String substring = s.substring(0, i) + s.substring(i+1);
set.addAll(powerSet(substring));
}
return set;
}
这是家庭作业的一部分,我不能创建任何类型的帮助类,并且方法必须是 ArrayList 类型。该方法必须涉及递归。
感谢您的帮助!
【问题讨论】:
-
答案应该是什么?顺序重要吗?
-
@PaulBoddington 顺序无关紧要,但正确答案应该是“”,“a”,“b”,“c”,“ab”,“ac”, “bc”,“abc”。
-
好的,你基本上已经完成了。只需添加“”,使用HashSet而不是ArrayList,然后在最后转换为ArrayList。
-
是的,HashSet 可以解决这个问题。 Set 是一个不允许重复的集合。
-
太棒了!谢谢你的建议!