题解 | #字符串的排列#
字符串的排列
https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Solution {
public ArrayList<String> Permutation(String str) {
char[] chars = str.toCharArray();
ArrayList<String> ans = new ArrayList<>();
boolean[] isVisited = new boolean[str.length()];
Map<String, Integer> map = new HashMap<>();
DFS3(ans, chars, isVisited, new StringBuilder(""), str.length(), map);
return ans;
}
public void DFS3(ArrayList<String> ans, char[] chars, boolean[] isVisited,
StringBuilder stringBuilder, int length, Map<String, Integer> map) {
if (length == 0 && !map.containsKey(stringBuilder.toString())) {
ans.add(stringBuilder.toString());
map.put(stringBuilder.toString(), 0);
return;
} else {
for (int i = 0; i < chars.length; i++) {
if (!isVisited[i]) {
isVisited[i] = true;
stringBuilder.append(chars[i]);
DFS3(ans, chars, isVisited, stringBuilder, length - 1, map);
isVisited[i] = false;
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
}
}
}
}
}
SHEIN希音公司福利 222人发布