package com.String;
import java.util.ArrayList;
public class StrFullArrange {
/**
* 题目表述:给定一个字串,求其中字母的全排列;
* 思路:利用递归方法:预设一个与字串等长的空字符创 来存储结果,开始循环扫描当前备选字符集的每一个字符,将其放入空串中的第i个位置,然后从备选字符集中剔出掉该字符,将字符集连同当前的临时结果
* 传入下一级的函数中 作同样的处理,直至空字符串被填满。
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Character> str=new ArrayList<Character>();
String s="abcd";
char[] cs=s.toCharArray();
for(int i=0;i<cs.length;i++){
str.add(cs[i]);
}
StrFullArrange sfa=new StrFullArrange();
char[] now=new char[str.size()];
int count=0;
sfa.FullArrange(now, str, count);
}
public void FullArrange(char[] now,ArrayList<Character> str,int count){
if(str.size()<2){
now[count]=str.get(0);
count++;
System.out.println(new String(now));
}else{
for(int i=0;i<str.size();i++){
now[count]=str.get(i);
ArrayList<Character> sublist=new ArrayList<Character>();
for(int j=0;j<str.size();j++){
if(j!=i){
sublist.add(str.get(j));
}
}
int next=count+1;
FullArrange(now,sublist,next);
}
}
}
}
字串之全排列
最新推荐文章于 2023-08-02 00:42:29 发布