我正在編寫一個程序來列出一個字符串的所有子集。我的程序(下面給出)按此順序列出「abcd」的子集:這些子集的順序是什麼?
'' 'd' 'c' 'cd' 'b' 'bd' 'bc' 'bcd' 'a' 'ad' 'ac' 'acd' 'ab' 'abd' 'abc' 'abcd'
這是正確的。然而,對照品溶液列出他們在這個順序:
'' 'a' 'b' 'ab' 'c' 'ac' 'bc' 'abc' 'd' 'ad' 'bd' 'abd' 'cd' 'acd' 'bcd' 'abcd'
我的問題是:這是什麼順序的名字嗎?
供參考,這是我的計劃:
import java.util.ArrayList;
import java.util.Collections;
/**
This class generates subsets of a string.
*/
public class SubsetGenerator
{
public static ArrayList<String> getSubsets(String word)
{
ArrayList<String> result = new ArrayList<String>();
//fill out
//result.add("");
if(word.length() == 0)
{
result.add("");
}
else
{
String notFirst = word.substring(1);
ArrayList<String> smaller = getSubsets(notFirst);
//System.out.println(smaller);
char first = word.charAt(0);
result.addAll(smaller);
for(String i: smaller)
{
result.add(first+i);
}
}
//simpleSubsets = getSubsets(simple+word.charAt(0));
// Form a simpler word by removing the first character
// fill out
// Generate all subsets of the simpler word
// fill out
// Add the removed character to the front of
// each subset of the simpler word, and
// also include the word without the removed character
// fill out
// Return all subsets
return result;
}
}
特定的順序是什麼?以及你的結果指的是什麼?爲什麼你得到的正確輸出是正確的? –