import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return string字符串ArrayList */ public ArrayList<String> Permutation (String str) { // write code here HashSet<String> set = new HashSet<>(); dfs(str, 0, set, new StringBuilder(), new boolean[str.length()]); return new ArrayList<>(set); } private void dfs(String str, int idx, HashSet<String> set, StringBuilder sb, boolean[] isUsed) { if (sb.length() == str.length()) set.add(sb.toString()); else { for (int i = 0; i < str.length(); i++) { if (!isUsed[i]) { sb.append(str.charAt(i)); isUsed[i] = true; dfs(str, i, set, sb, isUsed); sb.deleteCharAt(sb.length() - 1); isUsed[i] = false; } } } } }