求字符串全排列的递归算法(java程序)

import java.util.ArrayList;
import java.util.List;
/**
* 求字符串的全排列
*
* @author wenin819
*
*/
public class Arrange {
/**
* 判断调用求排列的主要方法
*/
public static List<String> arrange(String input){
if(null == input || 0 == input.length()){
System.out.println("输入为空!结果也为空!");
return null;
}
List<String> rsList= new ArrayList<String>();
arrangeItem(new StringBuffer(input), input.length() - 1, rsList);
return rsList;
}
/**
* 求排列的主要方法
*/
public static void arrangeItem(StringBuffer input, int end,
List<String> rsList) {
if (0 == end) {
rsList.add(new String(input));
return;
}
for (int i = 0; i <= end; i++) {
swap(input, i, end);
arrangeItem(input, end - 1, rsList);
swap(input, i, end);
}
}
/**
* 置换StringBuffer字符串中i和j位置上的字符
*/
private static void swap(StringBuffer word, int i, int j) {
if (i == j)
return;
char temp;
temp = word.charAt(i);
word.setCharAt(i, word.charAt(j));
word.setCharAt(j, temp);
}
/**
* 测试
*/
public static void main(String args[]) {
String input = new String("abcd");
if(args.length > 0)
input = args[0];
List<String> rsList = arrange(input);
System.out.println(input+"的排列总数为:" + rsList.size() + "/n排列分别为:");
for (int i = 0; i < rsList.size(); i++) {
System.out.println(rsList.get(i));
}
}
}

时间: 2024-09-11 02:25:26

求字符串全排列的递归算法(java程序)的相关文章

java程序调用存储过程得到新增加记录的id号的方法

关于ms sql server2000的存储过程,主要作用是在表test中插入一条记录,然后得到新增加记录的id号. test表三个字段:ID:自动增长yhm:用户名 字符串类型kl: 密码   字符串类型 请问在java程序中如何调用这个存储过程才能实现,得到新增加记录的id号 存储过程如下:CREATE PROCEDURE yh_insert @yhm varchar(50),@kl varchar(50) AS begin   set nocount on  insert into tes

查询 文件读写-java程序字符串问题(求大牛帮忙)

问题描述 java程序字符串问题(求大牛帮忙) 一个文件夹中(可能包含多个文本文件或子文件夹),查询其中包含关键字(至少一个)的文本文件然后输出这个文本文件的路径和所包含的关键字.关键字也存放在一个文本文件当中.不知程序该怎么写(java菜鸟,求大牛帮忙).关键字不区分大小写,一般只有字母和ASCII码组成,要忽略空格.最后的结果也要输出在一个文本文件上 解决方案 这个的话 第一个就这么个思路了 1:写一个递归算法 遍历到当前文件夹下的所有子文件(包括文件夹) 如果是文本文件的话则调用查找关键字

求字符串的len组合数(java程序)

import java.util.List; import java.util.ArrayList; /** * 求字符串的len组合数 * * @author wenin819 * */ public class Combination{ /** * 求组合数的主要方法 */ public static List<String> combination(String inStr, int len){ StringBuffer noDoubleStr =new StringBuffer(inS

java程序报错,求大神找bug

问题描述 java程序报错,求大神找bug package arraysofobjects; import java.util.Scanner; public class arraysofobjects { public static void main(String[] args) { Scanner input=new Scanner(System.in); students[] stu=new students[4]; String name; int grade; for(int i=0

java求字符串型逻辑表达式的bool值

  这是最近在项目中的一个需求,已知a=3,求字符串"a<=2"的值,也就是应该返回false.这个问题可大可小,就我们的应用场景也就是用来让用户自定义变量区间,比如类似下面这样的规则: a<=2    返回积分系数1.0 2<a<=5  返回积分系数1.1 a>5     返回积分系数1.2     如果用switch写死在代码中,以后要修改规则实在是很麻烦的事情,用户也希望能自己维护这样些区间值.于是我想就让用户自己输入这样的表达式和变量的值保存在数据

字符串处理-求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例)

问题描述 求大神帮解决如下程序,最基本的C语言字符串类型,不用编太难(如下为问题要求,测试用例,输出用例) Background Given an m by n grid of letters and a list of words, find the location in the grid at which the word can be found. A word matches a straight, uninterrupted line of letters in the grid.

求大神解答关于java string字符串的问题,现有如下要截取,希望按括号分组

问题描述 求大神解答关于java string字符串的问题,现有如下要截取,希望按括号分组 如下字符串:希望每个括号之间的内容分一组变成子字符串,或者输出到文本每个括号之间的内容为一行.丢弃其余的部分 CF --> ('c1,t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t i t

求一个能从数据库读取数据并显示到坐标图上的java程序

问题描述 求一个能从数据库读取数据并显示到坐标图上的java程序 新手学java,但是现在急需一个能从数据库读取数据并显示到坐标图上的java程序,希望各位能够给一点帮助,谢谢了 解决方案 http://www.open-open.com/lib/view/open1337915511824.htmlhttp://blog.csdn.net/sjf0115/article/details/7059407 解决方案二:

网络编程-求 扩展UDP实现SR可靠数据传输 的java程序...网络工程专业作业

问题描述 求 扩展UDP实现SR可靠数据传输 的java程序...网络工程专业作业 .UDP向应用层提供不可靠数据传输服务,本课题的任务是扩展UDP的服务,使其对应用层提供采用SR(选择重传)的可靠的数据传输服务. 2.可靠数据传输机制设计: 2.1 UDP不可靠数据传输服务抽象: 2.2扩展UDP实现SR可靠数据传输: 2.2.1 如何体现流水线机制? 2.2.1 如何应对传输过程中的错误,实现SR? 2.3可靠数据传输机制的验证系统. 课设大作业....小弟在这跪求一份....下周就要交了