一个字符串s="1245"这个字符串不是固定的,是一个变量
列举出所有的的组合数据

解决方案 »

  1.   

    import java.util.*;
    public class Test{
     public static void main(String[] args) {
            System.out.println(Arrays.toString(permutation("1234")));
        }
        
        private static String[] permutation(String orginal){
            ArrayList list = new ArrayList();
            if(orginal.length() == 1){
                return new String[]{orginal};
            } else{
               for (int i = 0; i < orginal.length(); i++) {
                 String s = orginal.charAt(i) + "";
                 String result = "";
                 String resultA = result + s;
         String leftS = orginal.substring(0, i) + orginal.substring(i + 1, orginal.length());
                 for (String element : permutation(leftS)) {
                        result = resultA + element; 
                        list.add(result);
                    }
                }
                return (String[]) list.toArray(new String[list.size()]);
            }
        }
    }
      

  2.   

    共有(int) Math.pow(2, list.size()) - 1中组合方式
      

  3.   

     String s = orginal.charAt(i) + "";
     String result = "";
     String resultA = result + s;
    resultA是取参数第一个字符吧,resultA = s就可以吧?不明白为什么要加上result
      

  4.   

    但是我觉得保存结果的list应该定义成全局啊,怎么这样也可以?
      

  5.   

    public static void main(String[] args) {
    String s="1245";//原字符串
    List<String> result = new ArrayList<String>();//存放结果信息。
    list(s, "", result);//列出字符的组合,放入result
    System.out.println(result.size());;
    System.out.println(result);
    }

    /**
     * 列出基础字符串(base)的所有组合
     * @param base 以该字符串作为基础字符串,进行选择性组合。
     * @param buff 所求字符串的临时结果
     * @param result 存放所求结果
     */
    public static void list(String base,String buff,List<String> result){
    if(base.length()<=0){
    result.add(buff);
    }
    for(int i=0;i<base.length();i++){
    list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result);
    }
    }