`
zyn010101
  • 浏览: 324937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求N个字符的全排列

阅读更多
package com.chinahrt.zyn.pango;

import java.util.ArrayList;
import java.util.List;

public class Test {

	/**求N个字符的全排列
		比如:1,2,3
		全排列为:123,132,213,231,321,312
		startStr,开始字符;str,剩余字符
	 */
	public List<String> getAllString(String startStr,String str){
		List<String> list = new ArrayList<String> ();
		//如果剩余字符串长度为1,返回开始字符串加剩余字符串
		if(str.length()==1){
			list.add(startStr+str);
			return list;
		}else{
			char[] charArray = str.toCharArray();
			//循环str的每一个字符,
			for(int i=0;i<charArray.length;i++){
				//把charArray的第i个字符作为开始字符,除第i个字符外的所有字符作为剩余字符,递归调用
				List<String> newStrList = getAllString(new String(charArray[i]+""),str.replace(new String(charArray[i]+""), ""));
				//迭代加入每一个字符串
				for(String s:newStrList){
					list.add(startStr+s);
				}
			}
			return list;
		}

	}
	/**
	 * @param args
	 * Administrator
	 * 2013-2-17 下午5:00:20
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test t = new Test();
		List<String> list = t.getAllString("", "1234");
		for(String str:list){
			System.out.println(str);
		}
	}

}

 

0
4
分享到:
评论
1 楼 di1984HIT 2014-01-11  
哈哈,不错。

相关推荐

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

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

    求字符串的全排列

    在编程领域,字符串的全排列是一个经典的问题,它涉及到算法和数据结构的知识。在这个问题中,我们被要求找出一个字符串中所有可能的字符排列组合。这个任务通常可以通过回溯算法或者堆栈等方法来实现。这里我们将...

    CC++全排列..1--n的全排列以及字符串的全排列

    在这个文件中,我们将讨论CC++中生成从1到n的全排列算法,以及字符串的全排列算法。 一、生成从1到n的全排列算法 这个算法的思想是使用递增的方式生成从1到n的所有排列。具体来说,算法的步骤如下: 1. 输入n 2. ...

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

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

    全排列算法 实例 一种实现了n个数全排列的算法

    本实例将详细阐述一种实现n个数全排列的算法。 全排列算法的基本思想是回溯法,也称为深度优先搜索(DFS)。回溯法是一种试探性的解决问题的方法,当尝试一条路径无法得到正确结果时,会返回上一步,尝试其他可能的...

    使用C语言解决字符串全排列问题

    问题 输入一个字符串,打印出该字符...如果能生成n-1个元素的全排列,就能生成n个元素的全排列。对于只有一个元素的集合,可以直接生成全排列。所以全排列的递归终止条件很明确,只有一个元素时。我们可以分析一下全排

    js实现字符全排列算法的简单方法

    在给定的文件内容中,提供了一个在JavaScript中实现字符全排列算法的简单方法。 具体算法思路是利用递归和正则表达式来实现。首先,函数charsMap接收一个字符串参数o,然后对这个字符串进行处理,去除其中的重复...

    五个字母全排列 .sql 数据库

    在数学上,全排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,称为从n个不同元素中取出m个元素的一个排列。在这个案例中,n=26(因为有26个英文字母),m=5,我们需要找出所有可能的5个字母的...

    数据结构 n个数的全排列

    如果输入123,那么就会输出123,132,213,231,312,321,依次列推

    Python字符串的全排列算法实例详解

    在本篇文章中,我们将通过一个具体的例子来详细介绍如何使用Python语言实现字符串的全排列算法,并深入探讨其中的细节。 #### 二、全排列的基本概念 全排列是指在一个集合中取出所有元素的所有不同排列方式。例如,...

    字典序全排列

    在计算机科学领域,全排列是组合数学中的一个重要概念,它指的是从n个不同元素中取出n个元素,按照一定的顺序排列的所有可能的方式。当n个元素的排列需要按照特定顺序,如字典序(从小到大的顺序)进行时,我们称之...

    字符串的全排列和组合算法.doc

    字符串的全排列和组合算法是计算机科学中的一种基础算法,主要应用于数据处理和问题求解。在本文档中,我们将探讨如何使用C++实现字符串的全排列算法,并讨论如何处理包含重复字符的情况。 首先,全排列是指从一个...

    易语言数字文本的全排列.rar

    全排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的方法数。当m等于n时,这就是全排列问题。在易语言中,我们可以使用递归或非递归的方式来实现全排列。 1. **递归实现**: - ...

    数据结构和算法:字符串

    另一个字符串处理的经典问题是字符串的全排列,即给定字符串S[0…N-1],设计算法枚举S的全排列。解决全排列问题可以使用递归算法或非递归算法。递归算法通常基于分治法的思想,通过逐个交换字符来生成新的排列,保证...

    关于全排列算法

    `for`循环遍历从0到`m`的所有值,对每个值`k`,都会调用`pai(str, m+1, n)`,这相当于在当前排列基础上,将下一个位置的字符与剩余字符进行全排列。 - 在每次递归调用之后,调用`chang(str, m)`,将当前排列的最后...

    对字符串或者一串数字进行全排列

    大家都知道对一个字符串进行排列是一个NP难问题,解决起来其实非常简单,只需要进行深度递归,将后面位置的数字或字符与基位置的进行调换,再选择输出即可!

    算法实践:全排列(递归)

    给定一个字符串,全排列的任务是找出所有可能的字符顺序,其中每个字符都恰好出现一次。在本例中,字符串仅包含小写字母,并且长度在2到8之间。 解决全排列问题通常采用递归方法。递归的基本思想是将复杂的问题分解...

    C语言实现的全排列算法

    全排列是指从n个不同元素中取出m个元素,按照一定的顺序排列的所有可能的组合方式。在本例中,我们讨论的是使用C语言实现的全排列算法,主要关注递归方法。 在C语言中,全排列的实现通常基于回溯法。回溯法是一种...

    qpl.rar_CC_全排列_输入全排列

    全排列是指从n个不同元素中取出m个元素(m≤n),按照一定的顺序排列起来的所有可能的排列组合。在这个案例中,我们特别关注输入是三个字符,比如"a"、"b"和"c",程序将输出所有可能的由这三个字符组成的字符串。 ...

Global site tag (gtag.js) - Google Analytics