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); } } }
相关推荐
简单的实现,代码很短。...输入一个字符串,输出它的字符的所有组合的情况 如输入“abc”,则输出abc,acb,bac,bca,cab,cba。 但如果输入“aba”,即有重复的,也会输出aba,aab,baa,baa,aba,aab。
CC++全排列..1--n的全排列以及字符串的全排列
问题 输入一个字符串,打印出该字符...如果能生成n-1个元素的全排列,就能生成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]>a[i+1]。 ★实验任务: 现在分别给你 n 以及...
大家都知道对一个字符串进行排列是一个NP难问题,解决起来其实非常简单,只需要进行深度递归,将后面位置的数字或字符与基位置的进行调换,再选择输出即可!
字符串循环左移 4/88 给定一个字符串S[0…N-1],要求把S的前k 个字符移动到S的尾部,如把字符串"abcdef" 前面的2个字符'a'、'b'移动到字符串的尾 部,得到新字符串"cdefab":即字符串循环 左移k。 多说一句:循环...
本程序实现由数字1~N组成的全排列,由于使用了模板,因此仅改变需要排列的数据源,还可实现对任意给定字符、字符串或其他对象的全排列
算法课写的小程序,在字典序下对输出序列的全排列
现给定一个长度为n-1由U和D构成的字符串,要求你构造一个字典序最小的全排列a,使其满足: 1.若第i个字符是U,则有a[i][i+1]; 2.若第i个字符是D,则有a[i]>a[i+1]。 ★实验任务: 现在分别给你n以及长度为n-1的字符...
其实排列实现了,组合也就实现了,组合C(N,R)就是P(N,R)/P(R,R) ,实现这一功能比较简单的是递归算法,但考虑到递归的性能,下面采用了2种非递归的方法,具体代码如下 using System; using System.Collections....
举个例子,比如你要对a,b,c三个字符进行全排列,那么它的全排列有abc,acb,bac,bca,cba,cab这六种可能就是当指针指向第一个元素a时,它可以是其本身a(即和自己进行交换),还可以和b,c进行交换,故有3种可能,当第一...
本文实例讲述了Golang排列组合算法问题之全排列实现方法。分享给大家供大家参考,具体如下: 【排列组合问题】 一共N辆火车(0<N<10),每辆火车以数字1-9编号,要求以字典序排序输出火车出站的序列号。 输入:...
全排列问题,C++,算法,喜欢编程的朋友可以看看,简单的
原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排列。因为Python切割数组或者字符串,以及合并比较方便,所以,程序会节省很多代码。 def ...
## 递归* 编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2)* 编程实现求阶乘n!* 编程实现一组数据集合的全排列 ## 排序 * 实现归并排序、快速排序、插入排序、冒泡排序、选择排序* 编程实现O(n)时间复杂度内找到一组数据...
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)递归法 介绍常用的两种...
require文件刷新.lua 完美获得小数点第n位.lua table 复写pairs方法.lua 实现数组的全排列.lua table数组的逆序.lua 将csv内容输出保存table.lua 以delimiter截取字符串输出table.lua 将全局变量替换其value.lua ...
求链表中间结点 题目分类 栈 20: 有效的括号 155: 最小栈 232: 用栈实现队列(todo) 844: 比较含退格的字符串 224: 基本计算器 682: 棒球比赛 496: 下一个更大的元素 503: 下一个更大的元素(循环数组) todo 1118 dp ...