import java.util.ArrayList;
import java.util.List;
/*
* 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
* 原始字符串是"abc",打印得到下列所有组合情况:
* "a" "b" "c"
* "ab" "bc" "ca" "ba" "cb" "ac"
* "abc" "acb" "bac" "bca" "cab" "cba"
**/
public class Test
{
static String strl="abc";//静态随类的加载而加载,后面可以直接调用
static char[] Arr=strl.toCharArray();//将字符串转换成数组
public static void main(String[] args)
{
List<Integer> list1 = new ArrayList<Integer>();
for(int j=1;j<=Arr.length;j++)//按字符串的个数分行输出
{
get("",list1,j);//调用获取字符串的方法
System.out.println();
}
}
public static void get(String s,List<Integer> list1,int j)
{
if(j == 0)//当一个字符串要输出的个数为0时结束此字符串输出
{
System.out.print("\""+s+"\" ");
return;
}
List<Integer> list2;
for(int i=0;i<Arr.length;i++)
{
list2 = new ArrayList<Integer>();
list2.addAll(list1);
if(!list1.contains(i)) //将list1中不含的元素添加到list2
{
String str = s + Arr[i];
list2.add(i);
get(str,list2,j-1);//采用递归调用方法
}
}
}
} |
|