您的位置:首页 > 编程语言 > Java开发

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

2010-12-15 14:58 260 查看
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));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐