1. 程式人生 > >題目:輸入一個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a、b、c、ab、ac、bc、abc。

題目:輸入一個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a、b、c、ab、ac、bc、abc。

 題目:輸入一個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有abcabacbcabc

/*
 * AllQ.java 2011-10-23
 * Copyright 2010 - 2011 
 */
package java_string;

/*字串的所有組合*/

public class AllQ {

	/**
	 * @param args
	 */
	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));

		combination(str, index + 1, number - 1, sb);

		sb.deleteCharAt(sb.length() - 1);

		combination(str, index + 1, number, sb);

	}

	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 main(String[] args) {
		// TODO Auto-generated method stub

		combine("abcd");

	}

}