我试图按照我给出的某些伪代码执行功率集生成器的递归实现,但是当给出类似" abc"的字符串时,而不是设置
{},{a},{b},{c},{a,b},{a,c},{b,c}和{a,b,c},
我得到{},{0},{1},{2},{0,1}等。
public static ArrayList GenerateSubsets(String setString) {
ArrayList A = new ArrayList<String>();
ArrayList temp = new ArrayList<String>();
if(setString.length() > 0) {
temp = GenerateSubsets(setString.substring(0,setString.length() - 1));
for(int i = 0; i < temp.size(); i++) {
System.out.println("Temp i: "+temp.get(i));
A.add(temp.get(i));
A.add(temp.get(i) + " " + (setString.length() - 1));
}
return A;
}
else
A.add("");
return A;
}
这直接基于伪代码,为什么它没有正常工作?
编辑:这是测试
public static void main(String[] args) {
ArrayList one = GenerateSubsets("abcd");
for(int i = 0; i < one.size(); i++) {
System.out.print(one.get(i)+ ", ");
if(i%5 == 0) {
System.out.println("");
}
}
}
我得到的输出(没有换行符)
, 3,2,3 3,1 1,3 3 1 2 1 2 3,0,0 3,0 2, 0 2 3,0 1 0 1 3,0 1 2,0 1 2 3,
答案 0 :(得分:1)
语句(setString.length() - 1)
为您提供char的索引。通过连接它,您将获得一组Power索引。您需要使用setString.charAt(setString.length()-1)
在给定位置接收char。