A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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);//采用递归调用方法
            }
        }
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马