【Java筆記試験問題】出力文字列のすべての組合せ
2959 ワード
1、テーマ
文字列を入力し、文字列内のすべての文字の組合せを出力します.例えば、abcが入力されると、その組み合わせはa、b、c、ab、ac、bc、abcである.
2、問題を解く思想
まずcombine関数を作成し、文字列を処理し、文字列が空であれば直接出力します.文字列が空でない場合は、StingBuilderオブジェクトを作成し、文字列内の各要素をループ処理し、combination関数を呼び出します.combination関数の場合、文字列内の文字のすべての組合せを出力する機能があります.
3、Javaコード
文字列を入力し、文字列内のすべての文字の組合せを出力します.例えば、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);
}
}