`
朱嘉华
  • 浏览: 238408 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java字符串全排列问题

    博客分类:
  • java
阅读更多
import java.util.Iterator;
import java.util.TreeSet;

public class Sort {

     private String[] b = new String[] {"1","2","2","3","4","6"};

     private int n = b.length;

     private boolean[] visited = new boolean[n];

     private int[][] a = new int[n][n];

     private String result = "";

     private TreeSet<String> set = new TreeSet<String>();

     public static void main(String[] args) {
         new Sort().start();
     }

     private void start() {

         // Initial the map a[][]

         for (int i = 0; i < n; i++) {
             for (int j = 0; j < n; j++) {
                 if (i == j) {
                     a[i][j] = 0;
                 } else {
                     a[i][j] = 1;
                 }
             }
         }

         // 3 and 5 can not be the neighbor.

         a[3][5] = 0;
         a[5][3] = 0;

         // Begin to depth search.

         for (int i = 0; i < n; i++) {
             this.depthFirstSearch(i);
         }

         // Print result treeset.

         Iterator it = set.iterator();
         while (it.hasNext()) {
             String string = (String) it.next();
             System.out.println(string);
         }
     }

     private void depthFirstSearch(int startIndex) {
         visited[startIndex] = true;
         result = result + b[startIndex];
         if (result.length() == n) {
             // "4" can not be the third position.

             if (result.indexOf(" 4 ") != 2) {
                 // Filt the duplicate value.

                 set.add(result);
             }
         }
         for (int j = 0; j < n; j++) {
             if (a[startIndex][j] == 1 && visited[j] == false) {
                 depthFirstSearch(j);
             }
         }

         // restore the result value and visited value after listing a node.

         result = result.substring(0, result.length() - 1);
         visited[startIndex] = false;
     }
}
分享到:
评论

相关推荐

    Java_字符串全排列大全_(已解决重复问题)

    Java写的源码,解决各种字符串全排列问题,已解决重复问题,经过上机调试可直接运行

    Java实现字符数组全排列的方法

    在全排列问题中,我们从数组的第一个元素开始,每次尝试将其与后面的元素交换位置,并递归地处理剩余的元素,直到所有元素都尝试过,这样就能得到所有可能的排列。 在上述代码中,`AllSort` 类包含了实现全排列的...

    java实现字符串的全排列

    "java实现字符串的全排列" java实现字符串的全排列是指通过编程语言java来生成一个字符串的所有可能排列。例如输入字符串abc,则输出所有可能的排列组合:abc,acb,bac,bca,cab和cba。 在java中,实现字符串的...

    生成字符串的全排列,可以用回溯法实现

    在字符串全排列问题中,我们需要找出一个给定字符集的所有可能的排列组合。例如,对于字符串 "abc",全排列包括 "abc"、"acb"、"bac"、"bca"、"cab" 和 "cba"。这个问题可以使用回溯法来解决,其基本步骤如下: 1. ...

    Java递归实现字符串全排列与全组合

    Java递归实现字符串全排列和全组合是一种高效的算法,可以解决字符串的排列和组合问题。但是,需要注意的是,递归算法需要将问题分解成更小的子问题,然后解决这些子问题,并将结果组合起来构成原始问题的解答。

    输入一个字符串,输出所有该字符串的组合情况

    - `TestPermute.java`:可能实现了字符串的全排列算法,并命名为`permute`方法。 - `Test2.java`:可能是对另一种算法的实现,比如改进或优化过的版本。 - `Test.java`:通常用于编写单元测试,检验各种输入情况下,...

    输出n个字符的全排列(没有重复字符)

    简单的实现,代码很短。...输入一个字符串,输出它的字符的所有组合的情况 如输入“abc”,则输出abc,acb,bac,bca,cab,cba。 但如果输入“aba”,即有重复的,也会输出aba,aab,baa,baa,aba,aab。

    java递归实现N个数全排列输出

    在编程领域,全排列是一个经典的算法问题,它涉及到数组或字符串的所有可能的顺序组合。当给定一个包含N个不同元素的集合时,全排列就是要列出所有可能的N!(N的阶乘)种排列方式。在这个场景中,我们将探讨如何使用...

    Java实现abc字符串排列组合

    本文将详细介绍Java实现abc字符串的排列组合,主要包括可重复排列、全排列和组合三个部分。 可重复排列 在Java中,可以使用递归来实现abc字符串的可重复排列。可重复排列是指从abc三个字符中选择字符,组成长度为3...

    全排列的Hash函数(JAVA)

    标题中的“全排列的Hash函数(JAVA)”指的是在Java编程中使用Hash函数处理全排列问题。全排列是指从n个不同元素中取出m个元素,按照一定的顺序排列起来的所有可能的排列方式。在这个场景下,Hash函数通常用于快速查找...

    彻底理解全排列算法

    全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。

    重复元素全排列

    这种算法常用于密码学、数据加密以及计算机科学中的各种组合优化问题,例如在处理含有重复字母的字符串时,找出所有可能的重组方式。 #### 知识点二:算法实现原理 在Java中实现重复元素全排列,通常采用递归的...

    java算法,经典面试必备

    1. 字符串全排列: 在提供的代码中,可以看到两种实现字符串全排列的方法。它们都是通过递归的方式来生成所有可能的字符组合。核心逻辑是遍历基础字符串(base),在每次迭代中删除一个字符,并将这个字符添加到...

    精心搜集整理:2014年前蓝桥杯Java竞赛历年试题及详尽答案

    此题不仅考验对字符串及字符数组的操作熟练度,还加深了对Java中字符串处理函数应用的理解。 通过深入解析这些精选题目,学习者不仅能够掌握Java递归、字符串操作、字符数组运用等核心技能,还能熟悉面向对象编程的

    最新JAVA编程题全集_50题及答案2

    第一部分代码实现了一个全排列算法,它遍历输入字符串中的每个字符,并递归地删除已使用过的字符,形成新的字符串基础,然后将当前字符添加到已构建的组合中。这种方法称为回溯法,用于生成所有可能的字符串组合。...

    java面试题目

    3. **全排列问题**:对于字符串数组的全排列,可以采用回溯算法或者动态规划来解决,涉及到数组操作和递归。 4. **JavaScript编程**:在浏览器中显示当前星期,可以用JavaScript的Date对象获取日期,然后处理输出。...

    Burrows-Wheeler压缩算法JAVA实现

    - 首先,对输入字符串进行全排列,生成所有可能的旋转字符串。 - 接着,将这些旋转字符串按其最后一个字符的字典序进行排序。 - 最后,取排序后的第一列作为BWT结果。 2. **逆Burrows-Wheeler转换**: - 逆BWT...

    字典排序求全排列的算法

    字典排序,也称为字典序,是一种特殊的排序方式,特别是在字符串中应用广泛。它将字符串按照字典的顺序排列,即按照字符的Unicode值进行升序排序。在处理全排列问题时,字典排序可以帮助我们系统地生成所有可能的...

    浦发银行机考历年真题(3).pdf

    根据提供的文件信息,可以...这些知识点涉及编程基础、数据结构、算法设计、字符串处理以及日期时间处理等多方面内容,对于从事Java后端开发的人员来说,掌握这些知识点对于提升编程能力、解决实际问题有着重要的意义。

    JAVA面试编程题.pdf

    1. 字符串全排列: 这个题目是要求实现一个函数,生成给定字符串所有可能的排列组合。这里使用了递归算法,通过删除字符串中的一个字符并将其添加到当前缓冲区,然后对剩余部分进行相同的操作,最终得到所有排列。...

Global site tag (gtag.js) - Google Analytics