题目:
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
解题过程:
思路来自LeetCode用户:女马了个b…
class Solution {
public String[] permutation(String s) {
Set<String> list = new HashSet<>();
char[] arr = s.toCharArray();
StringBuilder sb = new StringBuilder();
boolean[] visited = new boolean[arr.length];
dfs(arr, "", visited, list);
return list.toArray(new String[0]);
}
public void dfs(char[] arr, String s, boolean[] visited, Set<String> list)
{
if(s.length() == arr.length)
{
list.add(s);
return;
}
for(int i=0; i<arr.length; i++)
{
if(visited[i]) continue;
visited[i] = true;
dfs(arr, s+String.valueOf(arr[i]), visited, list);
visited[i] = false;
}
}
}