`

一段全排列的代码

 
阅读更多

一个字符串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); 
        } 
    } 
} 

 

分享到:
评论

相关推荐

    JS实现的数组全排列输出算法

    这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 function ...

    python通过yield实现数组全排列的方法

    这段代码用到了yield方法,全排列速度加倍 def perm(arr, pos = 0): if pos == len(arr): yield arr for i in range(pos, len(arr)): arr[pos], arr[i] = arr[i], arr[pos] for _ in perm(ar

    ACM 算法经典代码 数据结构经典代码

    常用源代码 包括很多经典算法 数学问题: 1.精度计算——大数阶乘 2.精度计算——乘法(大数乘小数) 3.精度计算——乘法(大数乘大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数、...

    ACM算法模板和pku代码

    代码目录结构: 目录: 动态规划 钉子和小球 Hash+dp分词(摩尔电码) 火柴棒等式 DAG图DP,老鼠打洞 最短子路径 最少回文数 矩阵链乘 树形DP 最少的石子填到根节点 树种删除最少的边使刚好剩下P个点 树的支配...

    常用算法代码

    | 判断点 P 是否在线段 L 上 35 | 判断两个点是否相等 35 | 线段相交判断函数 35 | 判断点 Q 是否在多边形内 35 | 计算多边形的面积 35 | 解二次方程 AX^2+BX+C=0 36 | 计算直线的一般式 AX+BY+C=0 36 | 点到...

    matlab代码积分-Permutation:做项目的时候遇到了一个问题,需要从n个数组(元组)中各取一个元素,组成新的排列,这个排列中任何的

    这段代码本来是一道比较经典的算法题,有很多种方法可以解决,比如直接对所有数组加起来做全排列,或者每个数组选一个数做,哪怕直接调用Python的函数直接算笛卡尔积都可以,网上有很多类似的资源。但是这些方法存在...

    LeetCode解题总结

    12.2.5 交易后需要停止一段时间 12.3 最长不含重复元素的子串 12.4 存放的最大水量 13. 动态规划 13.1 三角形从顶到底的最小路径和 13.2 最大连续子数组 13.3 字符串的所有子回文字符串 13.4 最长公共子序列问题 ...

    leetcode中国-leetcode:力码

    快速排序的第一阶段(findK), 高级(主席树), 快读(read), 编译优化) P1036 选数(求组合数(dfs)) P1157 组合的输出(求组合数(置位的遍历方向)) P1706 全排列问题(next_permutation, dfs(最主要需要记住,置位后...

    C#编程经验技巧宝典

    54 &lt;br&gt;0075 用回溯法找出n个自然数中取r个数的全排列 55 &lt;br&gt;0076 约瑟夫环问题 56 &lt;br&gt;0077 猴子选大王 57 &lt;br&gt;0078 如何判断IP是否正确 57 &lt;br&gt;0079 如何将小写金额转换为大写金额 57...

Global site tag (gtag.js) - Google Analytics