全排列字典序
【牛客剑指offer:字符串的排列】
【本题解析】

【代码实现】
class Solution {
public:
void DFS(string& str,set<string>& res,int begin){
//边界条件
if(begin == str.size() - 1){
res.insert(str);
}
for(int i = begin;i < str.size();i++){
swap(str[begin],str[i]);
DFS(str,res,begin+1);
//回溯
swap(str[begin],str[i]);
}
}
vector<string> Permutation(string str) {
vector<string> result;
set<string> res;
if(str.size() == 0){
return result;
}
DFS(str,res,0);
for(auto& e : res){
result.push_back(e);
}
return result;
}
};
class Solution {
public:
void dfs(vector<int>& nums,set<vector<int>>& res,int begin){
if(begin == nums.size() - 1){
res.insert(nums);
}
for(int i = begin;i < nums.size();i++){
swap(nums[begin],nums[i]);
dfs(nums,res,begin+1);
swap(nums[begin],nums[i]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> result;
if(nums.empty()){
return result;
}
//set去重
set<vector<int>> res;
dfs(nums,res,0);
for(auto& e : res){
result.push_back(e);
}
return result;
}
};
331

被折叠的 条评论
为什么被折叠?



