1. 程式人生 > 其它 >MarkDown一個深搜回溯去重板子

MarkDown一個深搜回溯去重板子

技術標籤: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()]); } }