原题
面试题 08.07.无重复字符串的排列组合

class Solution {
List<String> list=new ArrayList<>();
Set<Character> yongguo=new HashSet<>();
String s="";
public String[] permutation(String S) {
char ch[]=S.toCharArray();
zuhe(S.length(),ch);
String[] ans=new String[list.size()];
for(int i=0;i<list.size();i++){
ans[i]=list.get(i);
}
return ans;
}
public void zuhe(int changdu,char[] ch){
if(s.length()==changdu){
list.add(s);
return;
}
for(int i=0;i<ch.length;i++){
if(yongguo.contains(ch[i])){
continue;
}
else{
s=s+ch[i];
yongguo.add(ch[i]);
zuhe(changdu,ch);
s=s.substring(0,s.length()-1);
yongguo.remove(ch[i]);
}
}
}
}
class Solution {
List<String> list=new ArrayList<>();
String s="";
public String[] permutation(String S) {
char ch[]=S.toCharArray();
boolean[] yongguo=new boolean[ch.length];
zuhe(S.length(),ch,yongguo);
String[] ans=new String[list.size()];
for(int i=0;i<list.size();i++){
ans[i]=list.get(i);
}
return ans;
}
public void zuhe(int changdu,char[] ch,boolean yg[]){
if(s.length()==changdu){
list.add(s);
return;
}
for(int i=0;i<ch.length;i++){
if(yg[i]){
continue;
}
else{
s=s+ch[i];
yg[i]=true;
zuhe(changdu,ch,yg);
s=s.substring(0,s.length()-1);
yg[i]=false;
}
}
}
}