东莞网站seo优化托管,深圳惠州网站建设公司,开源网站有哪些,php做的网站代码文章目录题目描述思路 代码二刷打卡第五天#xff5e; 题目描述
和这道题很相似#xff0c;只是数据结构不同
思路 代码
DFS 辅助访问数组 Set 减枝通过 Set 实现去重
class Solution {SetString res new HashSet();char[] ar…
文章目录题目描述思路 代码二刷打卡第五天 题目描述
和这道题很相似只是数据结构不同
思路 代码
DFS 辅助访问数组 Set 减枝通过 Set 实现去重
class Solution {SetString res new HashSet();char[] arr;boolean[] visited;public String[] permutation(String s) {arr s.toCharArray();visited new boolean[arr.length];dfs(new StringBuilder());return res.toArray(new String[0]);}// 返回 s 的全排列可重复public void dfs(StringBuilder s) {// 找到一个结果的情况if(s.length() arr.length) {res.add(s.toString());return;}SetCharacter set new HashSet();for(int i 0; i arr.length; i) {// 当前字符未访问if(!visited[i]) {visited[i] true;// 当前字符第一次出现if(!set.contains(arr[i])) {dfs(s.append(arr[i]));set.add(arr[i]);s.delete(s.length() - 1, s.length());}// 恢复 visited[i]visited[i] false;}}}
}二刷
直觉没错还是 DFS Set 去重
class Solution {SetString set new HashSet();boolean[] visited;char[] arr;public String[] permutation(String s) {visited new boolean[s.length()];arr s.toCharArray();dfs(new StringBuilder());return set.toArray(new String[0]);}void dfs(StringBuilder sb) {if(sb.length() arr.length) {set.add(sb.toString());}for(int i 0; i arr.length; i) {if(!visited[i]) {visited[i] true;sb.append(arr[i]);dfs(sb);sb.deleteCharAt(sb.length() - 1);visited[i] false;}}}
}