MarkDown一個深搜回溯去重板子
阿新 • • 發佈:2020-12-15
技術標籤:LeetCode
class Solution {
private void permutationHelper(int len,char[] arr,StringBuilder sb,List<String> ret,int[] vis){
if(len == arr.length){
ret.add(sb.toString());
return;
}
for(int i = 0;i < arr.length;i++){
if (vis[i] == 1)
continue;
if(i > 0 && arr[i] == arr[i-1] && vis[i-1] == 1)
continue;
sb.append(arr[i]);
vis[i] = 1;
permutationHelper(len+1,arr,sb,ret,vis);
sb.deleteCharAt(sb.length()-1);
vis[ i] = 0;
}
}
public String[] permutation(String s) {
List<String> ret = new ArrayList<>();
char[] arr = s.toCharArray();
int[] vis = new int[arr.length];
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
permutationHelper (0,arr,sb,ret,vis);
return ret.toArray(new String[ret.size()]);
}
}