【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();
    }
}

你可能感兴趣的:(Java笔试题)