关闭

字符串全排列 java实现

标签: 全排列递归实现
8074人阅读 评论(5) 收藏 举报
分类:

经常会遇到字符串全排列的问题。例如:输入为{‘a’,’b’,’c’},则其全排列组合为abc,acb,bac,bca,cba,cab。对于输入长度为n的字符串数组,全排列组合为n!种。

思路:从字符串数组中每次选取一个元素,作为结果中的第一个元素。然后,对剩余的元素全排列,步骤跟上面一样。很明显这是个递归处理的过程,一直到最后即可。

按照惯例,talk is cheap,show me the code:

package leilei.bit.edu.tree;

public class RecursionTree {

    public static void permutation(char[] s,int from,int to) {
        if(to <= 1)
            return;
        if(from == to) {
            System.out.println(s);
        } else {
            for(int i=from; i<=to; i++) {
                swap(s,i,from); //交换前缀,使其产生下一个前缀
                permutation(s, from+1, to);
                swap(s,from,i); //将前缀换回,继续做上一个前缀的排列
            }
        }
    }

    public static void swap(char[] s,int i,int j) {
        char tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
    }

    public static void main(String[] args) {
        char[] s = {'a','b','c'};
        permutation(s, 0, 2);
    }

}

代码运行结果

abc
acb
bac
bca
cba
cab
8
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

java字符串全排列的实现方式

今天突然之间想起了自己来易查面试时的一个笔试题目,题目大致如下:求字符串s的全排列。     其实这个题目的实现方式也就是递归调用,当时也就写了一下伪代码,今天就把完整的实现方式和大家分享下。     下面的实现方式也存在一些小BUG,比如:对于字符串中出现相...
  • xiaojimanman
  • xiaojimanman
  • 2013-12-26 16:26
  • 2184

Java实现字符数组全排列

import org.junit.Test; public class AllSort { public void permutation(char[] buf, int start, int end) { if (start == end) {// 当只要求对数组中一个字母进行全排列时,...
  • RO_wsy
  • RO_wsy
  • 2014-05-06 09:36
  • 9651

字符串的排列组合算法合集

http://blog.csdn.net/hackbuteer1/article/details/7462447 全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因...
  • sjpz0124
  • sjpz0124
  • 2015-06-25 20:58
  • 974

求字符串的全排列

  • 2014-12-27 14:33
  • 166KB
  • 下载

全排列算法(java实现)

全排列算法(java实现)
  • randyjiawenjie
  • randyjiawenjie
  • 2011-04-10 16:53
  • 34803

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

  • 2014-03-25 14:05
  • 8KB
  • 下载

字符串全排列

问题输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串 abc、acb、bac、bca、cab 和 cba。思路假设要排列的字符为abc,那么由这些字符组成的排列可以使用以下方法: 首先固定首字母为a,那么只需要对余下字符bc进行...
  • u012434102
  • u012434102
  • 2015-05-04 21:06
  • 219

字符串的排列组合

本文是参考何海涛的博客第28题,自己进行学习的过程总结。 题目:输入一个字符串,打出该字符串的所有排列组合,不考虑重复字符。 思路:一般拿到这种题目,我们会自己写一个最简单的字符串abc,来进行排列组合,找出规律,我们会写出abc,acb,bac,bca,cab,cba。这六种,观察规律,我们会...
  • MMChinaMM
  • MMChinaMM
  • 2016-07-22 16:02
  • 405

字符串的全排列问题

问题 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba 思路 这是典型的递归求解问题,递归算法有四个特性: 必须有可达到的终止条件,否则程序陷入死循环子问题在规模...
  • sjpz0124
  • sjpz0124
  • 2015-06-25 20:56
  • 2484

字符串全排列

为题描述:输入一个字符串,输出该字符串所有可能的排列方式(全排列); 问题解析:字符串全排列问题算是一种找规律的问题,若果我们能找到生成第一个字符排列的方法,那么参考这个方法就可以依次生成其余的字符串排列,不过得强调一点,找到的这个方法必须得满足正确性、互异性和完整性,否则就不能称得上是全排列了。按...
  • xydian
  • xydian
  • 2016-04-26 23:30
  • 443
    个人资料
    • 访问:1368363次
    • 积分:12972
    • 等级:
    • 排名:第1224名
    • 原创:307篇
    • 转载:98篇
    • 译文:1篇
    • 评论:149条
    最新评论