leetcode 面試題08.08. 有重複字串的排列組合
題目描述:
有重複字串的排列組合。編寫一種方法,計算某字串的所有排列組合。
示例1:
輸入:S = “qqe”
輸出:[“eqq”,“qeq”,“qqe”]
示例2:
輸入:S = “ab”
輸出:[“ab”, “ba”]
思路:
回溯+剪枝
例如:qeq
首先排序:eqq
剪枝:1、剪去已經遍歷過的字元
2、減去一樣的字元
程式碼如下:
class Solution {
public:
int n=0;
vector<string>res;
vector<bool>visited;
string str="";
vector<string> permutation(string S) {
if(S.empty()) return {""};
n=S.size();
visited=vector(n,false);
sort(S.begin(),S.end());
dfs(S,0);
return res;
}
void dfs(string s,int cur){
if(cur==n){
res.push_back(str);
return;
}
for(int i=0;i<n;i++){
if(visited[i]) continue;//剪枝1
if(i>0&&s[i]==s[i-1]&&!visited[i-1]) continue;//剪枝2 這裡為什麼還有加一個!visited[i-1]??
str+=s[i];
visited[i]=true;
dfs(s,cur+1);
visited[i]=false;
str.pop_back();
}
}
};
解釋:
相關文章
- 無重複字串的排列組合字串
- 字串排列組合問題字串
- 有重複元素的全排列
- 面試有關字串中字元出現重複字元的面試問題,這裡都有了面試字串字元
- LeetCode題解(1668):最大重複子字串(Python)LeetCode字串Python
- LeetCode 567. 字串的排列LeetCode字串
- LeetCode-459-重複的子字串LeetCode字串
- 排列組合
- 允許重複的組合
- LeetCode刷題進階之重新排列字串(1528)LeetCode字串
- 位元組跳動面試官這樣問有關字串的問題!!面試字串
- 常見規格排列組合問題
- leetcode無重複字元的最長字串 python實現LeetCode字元字串Python
- 字串-面試題字串面試題
- 第五章 字串專題 ---------------- 5.1 題解:判斷字串有無重複字元字串字元
- 【數學】組合數學 - 排列組合
- 回溯問題Python框架總結——排列組合問題Python框架
- 20241108,LeetCode 每日一題,用 Go 計算字串中最長無重複字元LeetCode每日一題Go字串字元
- 重複的子字串字串
- 組合數學筆記-排列與組合筆記
- LeetCode 面試題01.06LeetCode面試題
- json字串返回的資料有重複的資料JSON字串
- 楊輝三角(組合數)+排列組合
- 【刷題日記】leetcode-767 重構字串LeetCode字串
- leetcode面試經典150-26. 刪除有序陣列中的重複項LeetCode面試陣列
- Facebook 面試題 | 字串相加面試題字串
- leetcode 劍指 Offer 48. 最長不含重複字元的子字串LeetCode字元字串
- JAVA面試題筆試題-查詢一個字串不重複最長的串(個人方法)Java面試題筆試字串
- 面試必問的陣列去重複面試陣列
- LeetCode每日一題:重複 N 次的元素(No.961)LeetCode每日一題
- LeetCode 精選TOP面試題 演算法題 26.刪除排序陣列中的重複項 -演算法&測試-easy模式LeetCode面試題演算法排序陣列模式
- LeetCode 316. 去除重複字母 java題解LeetCodeJava
- 重複列印字串字串
- CF1796C C. Maximum Set 題解 排列組合
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- 搞定字串類面試題-Palindrome字串面試題
- Google 面試題 | 3個非重複子陣列最大和Go面試題陣列
- 字串全排列字串