package data_structures;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//输入一个字符串,按照字典序打印出该字符串的所有排列,如输入abc,打印出abc,acb,bac,bca,cab,cba
public class Demo26 {
public void PermutationHelper(char[] cs,int i,List<String> list) {
if(i==cs.length-1) {
String val = String.valueOf(cs); //字符数组---》字符串
if(!list.contains(val))
list.add(val);
}else {
for(int j=i;j<cs.length;j++) {
swap(cs,i,j);
PermutationHelper(cs,i+1,list);
swap(cs,i,j); //交换以后还需要还原回来,以便for循环第二个遍历
}
}
}
public void swap(char[] cs,int i,int j) {
char temp = cs[i];
cs[i] = cs[j];
cs[j] = temp;
}
public ArrayList<String> Permutation(String str){
List<String> res = new ArrayList<String>();
if(str!=null&&str.length()>0) {
PermutationHelper(str.toCharArray(),0,res); //字符串----》字符数组
Collections.sort(res);
}
return (ArrayList) res;
}
public static void main(String[] args) {
Demo26 d26 = new Demo26();
/*
* ArrayList<String> li = d26.Permutation("abc"); for(String a : li) {
* System.out.println(a); }
*/
System.out.println(d26.Permutation("abc").toString());
}
}
26.字符串的组合(按字典序)
字符串全排列算法
最新推荐文章于 2022-12-24 12:59:22 发布
本文介绍了一个使用递归和字符交换技巧实现的字符串全排列算法。通过一个Java示例程序,详细展示了如何生成并按字典序输出给定字符串的所有可能排列,例如输入abc,输出所有可能的组合。
612

被折叠的 条评论
为什么被折叠?



