本帖最后由 李嘉泓 于 2015-4-3 00:36 编辑
编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
做的事这道题
package com.itheima;
import java.util.ArrayList;
import java.util.List;
/**
*5、 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
*/
public class Test5 {
static char[] chars="abcd".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+"");
System.out.println();
}
}
以上是代码
图片是这样的
|
|