题目
这个和leetcode47题类似,但每次做都很吃力,之后再回来补思路了……
具体代码
import java.util.*;
class Solution {
public String[] permutation(String s) {
if(s == null || s.length() == 0){
return new String[]{};
}
List<String> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();
char[] ch = s.toCharArray();
core(list,sb,ch,0);
String[] res = new String[list.size()];
Iterator<String> ite = list.iterator();
int i = 0;
while(ite.hasNext()){
res[i++] = ite.next();
}
return res;
}
public void core(List<String> list,StringBuilder sb,char[] ch,int index){
if(index == ch.length){
list.add(sb.toString());
return;
}
HashSet<Character> set = new HashSet<>();
for(int i = index; i < ch.length;i++){
if(set.contains(ch[i])){
continue;
}
set.add(ch[i]);
swap(ch,index,i);
sb.append(ch[index]);
core(list,sb,ch,index+1);
sb.deleteCharAt(sb.length()-1);
swap(ch,index,i);
}
}
public void swap(char[] ch,int i,int j){
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}