当前位置: 首页剑指offer刷题第四期问题详情 【回溯专题】剑指 Offer 38. 字符串的排列 本问题对应课程链接:剑指offer刷题第四期 要求: 1、请打卡你的解题代码,如果能简单说一下思路则简单说一下思路。 2、给出你代码所用的时间复杂度和空间复杂度
共以下 12 个回答
class Solution { path; res;
List
List
boolean[] vis;
public String[] permutation(String s) {
this.path = new ArrayList<>();
this.res = new ArrayList<>();
this.vis = new boolean[s.length()];
}
class Solution { permutation(string s) {
public:
vector
dfs(s,0);
return res;
}
};
unordered_set去除重复元素
时间复杂度:O(n!)
”’java result = new ArrayList<>();
class Solution {
List
StringBuilder sb = new StringBuilder();
public String[] permutation(String s) {
boolean[] visited = new boolean[s.length()];
char[] ch = s.toCharArray();
Arrays.sort(ch);
s = new String(ch);
backTracking(s,0,visited);
return result.stream().toArray(String[]::new);
}
public void backTracking(String s,int startIndex,boolean[] visited){
if(sb.length() s.length()){
result.add(sb.toString());
return;
}
for(int i = 0;i < s.length();i++){
//是否访问过
if(visited[i] || (i >= 1 && !visited[i-1] && s.charAt(i-1) s.charAt(i))){
continue;
}
sb.append(s.charAt(i));
visited[i] = true;
backTracking(s,i+1,visited);
sb.deleteCharAt(sb.length()-1);
visited[i] = false;
}
}
}
”’
class Solution {
}
8.4
Day25:下面是代码