【Java筆記試験問題】出力文字列の全配列


1、テーマ
文字列を入力し、その文字列のすべての配列を印刷します.例えば文字列abcを入力すると、文字a,b,cで並べられるので文字列abc,bac,bca,cab,cbaが印刷される.
2、問題を解く思想
まず文字列を文字配列に変換し、recursionswap関数を確立して文字配列を配列し、開始位置が配列長以上であれば直接出力し、そうでなければその配列の要素位置を循環交換し、異なる配列を印刷します.
3、Javaコード
public class CombinationABC {
    public static void main(String[] args) {
        String str = “abc”;
        char[] arr = str.toCharArray();
        int length = arr.length;
        recursionSwap(arr,0,length);
    }

    public static void recursionSwap(char[] arr,int start,int length){
        if(start >= length-1){ 
            print(arr);
            return;
        }
        for(int i = start;i < length;i++){
            swap(arr,start,i);
            recursionSwap(arr,start+1,length);
            swap(arr,start,i);
        }
    }

    public static  void swap(char[] arr,int index1,int index2){  //    
        char temp = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = temp;
    }

    public static void print(char[] arr){  //    
        for(int i=0;iout.print(arr[i]);
        }
        System.out.println();
    }
}