字符串、数组的全排列问题

现实生活中有很多时候要用到计算几个数或者几种物品的全排列的问题,本文利用递归方法,用JAVA实现全排列的功能。

import java.util.Arrays;
import java.util.Scanner;

public class Permutation {

	/**
	 * @字符串全排列问题,即接收一组字符串,然后把每个字符的所有排列形式打印出来,并打印排列组数。
	 */
	static String input;
	static char[] aa;
	static int count = 0;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner console = new Scanner(System.in);
		System.out.println("请输入一串字符串:");
		while (console.hasNext()) {
			input = console.nextLine();
			aa = input.toCharArray(); //把输入的字符串放入一个char型数组中
			int length = aa.length-1;
			test(aa,0,length);
			System.out.println("共有"+count+"种排列方式");
		}
	}

	private static void test(char[] in,int start,int end) {
		// 采用递归的方式思考问题,把一串字符串分成两部分:第一个字符和后面的字符串
		// start是指向第一个字符的游标
		// end是字符数组最后一个字符的位置
		if(start==end){
			count++;
			System.out.println(Arrays.toString(in));
		}
		else{
			for(int i=start;i<=end;i++){
				char temp = in[start];
				in[start] = in[i];
				in[i] = temp;
			
			    test(in,start+1,end);
			    
				temp = in[start];
				in[start] = in[i];
				in[i] = temp;
			}
		}
	}

}
点赞