剑指 Offer 38. 字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。

 

你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

 

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

 

限制:

1 <= s 的长度 <= 8

dfs + set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
    bool vis[8];
    set<string> map;
    void dfs(string& s, int k, string str)
    {
        if(k == s.length())
        {
            map.insert(str);
            return;
        }
        for(int i = 0; i < s.length(); i++)
        {
            if(vis[i]) continue;
            vis[i] = 1;
            dfs(s, k + 1, str + s[i]);
            vis[i] = 0;
        }
    }
 
 
    vector<string> permutation(string s) {
        vector<string> ret;
        memset(vis, 0, sizeof(vis));
        dfs(s, 0, "");
        for(set<string>::iterator it = map.begin(); it != map.end(); it++)
        {
            ret.push_back(*it);
        }
        return ret;
 
    }
};

 

posted @   WTSRUVF  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-07-19 tensorflow 前向传播 2019.07.19
2018-07-19 A Chess Game HDU - 1524 (有向图博弈)
2018-07-19 Paint Chain HDU - 3980(sg)
2018-07-19 Stone Game, Why are you always there? HDU - 2999(sg定理)
2018-07-19 Business Cards UVALive - 4384(画图看图。。)
2018-07-19 YAPTCHA UVALive - 4382(换元+威尔逊定理)
2018-07-19 Joseph's Problem UVALive - 3521(等差数列的应用)
点击右上角即可分享
微信分享提示