字符串的排列

描述

输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。
例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。

示例1

输入:
"ab"
返回值:
["ab","ba"]
说明:
返回["ba","ab"]也是正确的         

示例2

输入:
"aab"
返回值:
["aab","aba","baa"]

示例3

输入:
"abc"
返回值:
["abc","acb","bac","bca","cab","cba"]

示例4

输入:
""
返回值:
[""]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
     // 深度搜索
     void dfs(string &str, std::set<string> &setVec, int idx){
        if(idx == str.size()){
            setVec.insert(str);
            return ;
        }
 
        for(int i = idx; i < str.size(); i++){
                swap(str[i], str[idx]);
                dfs(str, setVec, idx + 1);
                swap(str[i], str[idx]);
            }
     }
 
    vector<string> Permutation(string str) {
        std::set<string> setVec;
        dfs(str, setVec, 0);
        return std::vector<string>(setVec.begin(), setVec.end());
    }
};

  

 

posted @   Top-jia  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示