`
朱嘉华
  • 浏览: 232605 次
  • 性别: 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实现字符数组全排列的方法

    主要介绍了Java实现字符数组全排列的方法,涉及Java针对字符数组的遍历及排序算法的实现技巧,需要的朋友可以参考下

    java实现字符串的全排列

    主要为大家详细介绍了java实现字符串的全排列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

    主要为大家详细介绍了Java递归实现字符串全排列与全组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

    彻底理解全排列算法

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

    程序员面试攻略 part1(共2个)

    6.2 面试例题:字符串的全排列93 6.3 面试例题:字符串的全组合98 6.4 面试例题:电话键单词101 第7章其他程序设计问题109 7.1 计算机图形109 7.2 位操作符110 7.3 结构化查询语言112 7.4 并发程序设计技术...

    程序员面试攻略part 2(共2个)

    6.2 面试例题:字符串的全排列93 6.3 面试例题:字符串的全组合98 6.4 面试例题:电话键单词101 第7章其他程序设计问题109 7.1 计算机图形109 7.2 位操作符110 7.3 结构化查询语言112 7.4 并发程序设计技术...

    algorithms:java的一些算法实现

    : 字典树,用于高效存储、查找字符串单词。 : 能够获取大顶堆、小顶堆以及TopK过滤器。 : 给定一个序列,求按字典序的下一个排列。 : 洗牌算法,即把一个列表随机打乱。 : 列表旋转和移动。 : B树,支持CURD操作。 :...

    leetcode中国-LeetcodeSolution:LeetCode题目-Java解法(持续更新)

    字符串转换整数 (atoi) string 11 盛最多水的容器 double pointer 15 三数之和 array 16 最接近的三数之和 array 17 电话号码的字母组合 backtracking 22 括号生成 backtracking 24 两两交换链表中的节点 dfs 36 ...

    javalruleetcode-leetcode:力扣算法题解

    字符串转换整数 盛水最多得容器 括号生成 搜索旋转排序数组 全排列 跳跃游戏 合并区间 LRU缓存机制 翻转字符串里的单词 二叉树的右视图 岛屿数量 数字范围按位与 生命游戏 设计推特 水壶问题 两数相加II 01矩阵 单词...

    《Java基础》实验题和课程设计补充题.doc

    6- 10显示字符串中每个字符的Unicode值。 6-11例6.4Person对象信息管理增加功能,见思考题6-3。 6- 12Friends对象信息管理,图形用户界面类似例6.4,Friends类声明见教材实验3。6- 13Student对象信息管理,见思考题6-3 ...

    leetcode周赛有原题吗-leetcode:leetcodepractice(Java),包含《剑指offer》和少量《leetbook》

    字符串转换整数 (atoi) 中等 盛最多水的容器 中等 罗马数字转整数 简单 0014 最长公共前缀 简单 三数之和 中等 0020 有效的括号 简单 0021 合并两个有序链表 简单 0026 删除排序数组中的重复项 简单 0027 移除元素 ...

    电子商务大赛试题.doc

    " " A、搜索引擎注册 " " B、交换链接 " " C、电子邮件 " " D、网络社区 " " 答案: " " " " 4、将指定的字符在一定位数内进行全排列,得出验证字符串的密码破解方法是( )。 " " A、暴力解密 " " B、字典解密 " ...

Global site tag (gtag.js) - Google Analytics