所以我试图创建一个生成给定字符串幂集的方法。到目前为止,我已经提出错误输出" [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类型。该方法必须涉及递归。
我感谢任何帮助!
答案 0 :(得分:1)
我通常会帮助我的朋友找到自己的解决方案...... 但这次我只给你代码......请仔细阅读!不要复制!!
public static ArrayList<String> powerSet(String s){
ArrayList<String> ans = new ArrayList<String>();
if(s.isEmpty()){
ans.add("");
return ans;
}
ArrayList<String> withFirstElem = new ArrayList<String>();
ArrayList<String> withoutFirstElem = new ArrayList<String>();
withoutFirstElem = powerSet(s.substring(1));
for(String i : withoutFirstElem){
withFirstElem.add(i+s.charAt(0)); // adding first elem
}
ans.addAll(withFirstElem);
ans.addAll(withoutFirstElem);
return ans;
}
答案 1 :(得分:1)
String input = "abc";
for (int i = 1; i <(int) Math.pow(2,input.length()) ; i++) {
String eleman = "";
int arrayindex = 0;
for (int k = input.length() -1; k >= 0; k--) {
String index = ((i >> k) & 1) == 1 ? "1" : "0";
if(index == "1"){
eleman += input.charAt(arrayindex);
}
arrayindex++;
}
System.out.println(eleman);
}
并回答
c
b
bc
a
ac
ab
abc