`
zyn010101
  • 浏览: 320145 次
  • 性别: 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的全排列以及字符串的全排列

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

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

    数据结构 n个数的全排列

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

    构造全排列问题

    现给定一个长度为 n-1 由U 和D 构成的字符串,要求你构造一个字典序最小的全 排列 a,使其满足: 1.若第i 个字符是U,则有a[i][i+1]; 2.若第i 个字符是D,则有a[i]&gt;a[i+1]。 ★实验任务: 现在分别给你 n 以及...

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

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

    数据结构-字符串.pptx

    字符串循环左移 4/88 给定一个字符串S[0…N-1],要求把S的前k 个字符移动到S的尾部,如把字符串"abcdef" 前面的2个字符'a'、'b'移动到字符串的尾 部,得到新字符串"cdefab":即字符串循环 左移k。 多说一句:循环...

    全排列 C++(可实现数字、字母等的全排列)

    本程序实现由数字1~N组成的全排列,由于使用了模板,因此仅改变需要排列的数据源,还可实现对任意给定字符、字符串或其他对象的全排列

    字典序全排列

    算法课写的小程序,在字典序下对输出序列的全排列

    permutation

    现给定一个长度为n-1由U和D构成的字符串,要求你构造一个字典序最小的全排列a,使其满足: 1.若第i个字符是U,则有a[i][i+1]; 2.若第i个字符是D,则有a[i]&gt;a[i+1]。 ★实验任务: 现在分别给你n以及长度为n-1的字符...

    C#实现排列组合算法完整实例

    其实排列实现了,组合也就实现了,组合C(N,R)就是P(N,R)/P(R,R) ,实现这一功能比较简单的是递归算法,但考虑到递归的性能,下面采用了2种非递归的方法,具体代码如下 using System; using System.Collections....

    python实现全排列代码(回溯、深度优先搜索)

    举个例子,比如你要对a,b,c三个字符进行全排列,那么它的全排列有abc,acb,bac,bca,cba,cab这六种可能就是当指针指向第一个元素a时,它可以是其本身a(即和自己进行交换),还可以和b,c进行交换,故有3种可能,当第一...

    Golang排列组合算法问题之全排列实现方法

    本文实例讲述了Golang排列组合算法问题之全排列实现方法。分享给大家供大家参考,具体如下: 【排列组合问题】 一共N辆火车(0&lt;N&lt;10),每辆火车以数字1-9编号,要求以字典序排序输出火车出站的序列号。 输入:...

    n个数据排序问题

    全排列问题,C++,算法,喜欢编程的朋友可以看看,简单的

    python非递归全排列实现方法

    原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排列。因为Python切割数组或者字符串,以及合并比较方便,所以,程序会节省很多代码。 def ...

    数据结构和算法必知必会的50个代码实现

    ## 递归* 编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2)* 编程实现求阶乘n!* 编程实现一组数据集合的全排列 ## 排序 * 实现归并排序、快速排序、插入排序、冒泡排序、选择排序* 编程实现O(n)时间复杂度内找到一组数据...

    LeetCode解题总结

    1.8 第n个全排列 1.9 验证数独的正确性 1.10 容纳雨水的量 1.11 旋转图像 1.12 数字加1 1.13 爬楼梯 1.14 格雷码 1.15 设置矩阵的行列为0 1.16 加油站问题 1.17 分糖果 1.18 只出现一次的数 2. 单链表 2.1 单链表...

    算法之排列算法与组合算法详解

    本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等。 2. 排列算法 常见的排列算法有: (A)字典序法 (B)递增进位制数法 (C)递减进位制数法 (D)邻位对换法 (E)递归法 介绍常用的两种...

    实用的utility function.zip

    require文件刷新.lua 完美获得小数点第n位.lua table 复写pairs方法.lua 实现数组的全排列.lua table数组的逆序.lua 将csv内容输出保存table.lua 以delimiter截取字符串输出table.lua 将全局变量替换其value.lua ...

    LeetCode判断字符串是否循环-Data-Structures-and-Algorithms:记录学习数据结构与算法的笔记

    求链表中间结点 题目分类 栈 20: 有效的括号 155: 最小栈 232: 用栈实现队列(todo) 844: 比较含退格的字符串 224: 基本计算器 682: 棒球比赛 496: 下一个更大的元素 503: 下一个更大的元素(循环数组) todo 1118 dp ...

Global site tag (gtag.js) - Google Analytics