Java

import java.util.ArrayList;
import java.lang.StringBuilder;
public class Solution {
    ArrayList<String> res ;
    int[] vis ;
    public ArrayList<String> Permutation(String str) {
        res = new ArrayList<>();
        vis = new int[str.length()];
        for(int i = 0; i < str.length(); i++){
            getList(new StringBuilder(),i,str);
            vis[i] = 0;
        }

        return res;
    }
    public void getList(StringBuilder sb, int i, String s){
        sb.append(s.charAt(i));
        vis[i] = 1;
        if(sb.length() == s.length()){
            if(!res.contains(sb.toString()))
                res.add(sb.toString());
            return;
        }
        for(int j = 0; j < s.length(); j++){
            if(vis[j] == 0){
                getList(sb, j, s);
                sb.deleteCharAt(sb.length()-1);
                vis[j] = 0; 
            }
        }

    }
}