字符串排列
程序员文章站
2022-07-12 09:19:36
...
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
牛客网官方题解
class Solution {
public:
void perm(string str, int pos, set<string> &re) {
if(pos == str.size()-1) {
re.insert(str);
return;
}
for(int i = pos; i < str.size(); i++){
swap(str[pos], str[i]); //每次固定一个元素
perm(str, pos+1, re);
swap(str[pos], str[i]); //回溯
}
}
vector<string> Permutation(string str) {
if(str.size() == 0) return {};
set<string> re; // 去重
perm(str, 0, re);
return vector<string>({re.begin(), re.end()}); //转化为vec
}
};
上一篇: 字符串排列
下一篇: LeetCode 打家劫舍系列