字符串排列
程序员文章站
2022-07-12 09:08:15
...
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public ArrayList<String> Permutation(String str) {
int len=str.length();
ArrayList<String> list=new ArrayList<>();
if(len==0){
return list;
}
//对字符串进行排序
String[] ref=new String[len];
for(int i=0;i<str.length();i++){
ref[i]=str.charAt(i)+"";
}
Arrays.sort(ref);
StringBuilder sb=new StringBuilder("");
boolean[] bo=new boolean[str.length()];
for(int i=0;i<ref.length;i++){
sb.append(ref[i]);
}
str=sb.toString();
StringBuilder sb1=new StringBuilder("");
find(sb1,bo,list,str);
return list;
}
public void find(StringBuilder sb,boolean[] bo,ArrayList<String> list,String c){
if(sb.length()==c.length()){
list.add(new String(sb.toString()));
return;
}
for(int i=0;i<c.length();i++){
if(bo[i]==false){
bo[i]=true;
String f=c.charAt(i)+"";
find(new StringBuilder(sb.append(f)),bo,list,c);
sb.delete(sb.length()-1,sb.length());
bo[i]=false;
//当前为的字符不能一样,
if(i<c.length()-1&&(c.charAt(i)+"").equals(c.charAt(i+1)+"")){
i++;
}
}
}
}
}
上一篇: 字符串排列
下一篇: java模拟斗地主洗牌,发牌