如標題所示,我需要執行以下操作。但我不知何故會得到錯誤的答案,或許有些循環是錯誤的?給定字符串中所有可能不同的字符子集JAVA
這是我迄今爲止編碼的內容,但它似乎給了我錯誤的結果。任何想法,幫助,提示,修復?
import java.util.ArrayList;
public class pro1
{
private String lettersLeft;
private ArrayList<String> subsets;
public pro1(String input)
{
lettersLeft = input;
subsets = new ArrayList<String>();
}
public void createSubsets()
{
if(lettersLeft.length() == 1)
{
subsets.add(lettersLeft);
}
else
{
String removed = lettersLeft.substring(0,1);
lettersLeft = lettersLeft.substring(1);
createSubsets();
for (int i = 0; i <= lettersLeft.length(); i++)
{
String temp = removed + subsets.get(i);
subsets.add(temp);
}
subsets.add(removed);
}
}
public void showSubsets()
{
System.out.print(subsets);
}
}
我的測試類是在這裏:
public class pro1
{
public static void main(String[] args)
{
pro1s = new pro1("abba");
s.createSubsets();
s.showSubsets();
}
}
我認爲它更簡單地使用另一種方法 - 如果字符串X的長度,生成1和2之間的所有數字** X - 1.如果在二進制表示位設置爲1 - 使用它索引作爲現有子集的元素。 –
當然有9個,而不是11個,你只列出10個,aba不是abba的子字符串? – Adam
@亞當你對錯計數(它應該是10)是正確的,但請注意,他要求的子集不是子串。從他期望的輸出中,顯然他想要字符串中有序字符集的唯一有序子集。 – Matthew