题解 | 字符串的排列
字符串的排列
https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return string字符串ArrayList */ public ArrayList<String> Permutation (String str) { // write code here ArrayList<String> arr = dfs(str,new boolean[str.length()],new String(""), new ArrayList<String>()); LinkedHashSet<String> set= new LinkedHashSet<String>(); for(int i=0;i<arr.size();i++){ set.add(arr.get(i)); } return new ArrayList<String>(set); } public static ArrayList<String> dfs(String str,boolean[] visted, String stack,ArrayList<String> list){ if(str.length()==stack.length()){ String out=stack.substring(0); list.add(out); return list; } for(int i=0;i<str.length();i++){ if(!visted[i]){ stack+=str.charAt(i); visted[i]=true; dfs(str,visted,stack,list); visted[i]=false; stack=stack.substring(0,stack.length()-1); } } return list; } }
字符串去重用linkedhashset