题解 | #字符串的排列#
字符串的排列
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
public class Solution {
Set<String> list = new HashSet<>();
public ArrayList<String> Permutation(String str) {
char[] c = str.toCharArray();
StringBuffer sb = new StringBuffer();
int n = c.length;
boolean[] isV = new boolean[n];
dfs(c,isV,0,sb);
return new ArrayList<>(list);
}
public void dfs(char[] c,boolean[] isV,int index,StringBuffer sb){
if(sb.toString().length() == c.length){
list.add(sb.toString());
}
for(int i = 0;i < c.length;i ++){
if(isV[i]){
continue;
}
sb.append(c[i]);
isV[i] = true;
dfs(c,isV,index+1,sb);
isV[i] = false;
sb.deleteCharAt(sb.length()-1);
}
}
}