【Java筆記試験問題】出力文字列のすべての組合せ


1、テーマ
文字列を入力し、文字列内のすべての文字の組合せを出力します.例えば、abcが入力されると、その組み合わせはa、b、c、ab、ac、bc、abcである.
2、問題を解く思想
まずcombine関数を作成し、文字列を処理し、文字列が空であれば直接出力します.文字列が空でない場合は、StingBuilderオブジェクトを作成し、文字列内の各要素をループ処理し、combination関数を呼び出します.combination関数の場合、文字列内の文字のすべての組合せを出力する機能があります.
3、Javaコード
public class CombinationAll {
    public static void main(String[] args) {
        combine("abc");
    }

    public static void combine(String str) {
        if (str == null)  //       ,     
            return;
        int length = str.length();
        StringBuilder sb = new StringBuilder();  //       
        for (int i = 0; i < length; i++) {
            combination(str, 0, i, sb);
        }
    }

    public static void combination(String str, int index, int number, StringBuilder sb) {
        if (number == -1) {
            System.out.println(sb.toString());
            return;
        }
        if (index == str.length())
            return;
        sb.append(str.charAt(index));  // StringBuilder     
        combination(str, index + 1, number - 1, sb);
        sb.deleteCharAt(sb.length() - 1);  // StringBuilder     
        combination(str, index + 1, number, sb);
    }
}