一段全排列的代码

一个字符串s="1245"这个字符串不是固定的,是一个变量
列举出所有的的组合数据
例如
1245,1254,1452,1425,1524,1542
2145,2154,2415,2451,2541,2514
4125,4152,4215,4251,4512,4521
5124,5142,5214,5241,5412,5421
-------------------------

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()]); 
        } 
    } 
} 

 

------------------------- 
package csdn; 
import java.util.ArrayList; 
import java.util.List; 
public class dg { 
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); 
        } 
    } 
} 

 

你可能感兴趣的:(全排列)