编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
import java.util.ArrayList; import java.util.List; public class test { static char[] chars = "abc".toCharArray(); public static void main(String[] args) { for (int i = 0; i < chars.length; i++) { // 取得每一个字符 List<Integer> list = new ArrayList<Integer>(); list.add(i); play(list); } } // 使用递归,每次加上列表中不存在的一个字符 private static void play(List<Integer> list) { print(list); for (int i = 0; i < chars.length; i++) { if (!list.contains(i)) { List<Integer> temp = new ArrayList<Integer>(list); temp.add(i); play(temp); } } } // 打印列表内容 private static void print(List<Integer> list) { for (Integer i : list) System.out.print(chars[i] + ""); System.out.println(); } }
原文:http://www.cnblogs.com/wikiki/p/4066152.html