《剑指offer》第三十八题(字符串的排列)

news/2025/2/25 3:24:31
// 面试题38:字符串的排列
// 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,
// 则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

#include <iostream>

void Permutation(char* pStr, char* pBegin);

void Permutation(char* pStr)
{
    if (pStr == nullptr)
        return;

    Permutation(pStr, pStr);
}

void Permutation(char* pStr, char* pBegin)
{
    if (*pBegin == '\0')
    {
        printf("%s\n", pStr);
    }
    else
    {
        for (char* pCh = pBegin; *pCh != '\0'; ++pCh)
        {
            char temp = *pCh;//先看有多少个可能的排头,为每个排头做递归处理
            *pCh = *pBegin;
            *pBegin = temp;

            Permutation(pStr, pBegin + 1);

            temp = *pCh;//还得交换回来
            *pCh = *pBegin;
            *pBegin = temp;
        }
    }
}

// ====================测试代码====================
void Test(char* pStr)
{
    if (pStr == nullptr)
        printf("Test for nullptr begins:\n");
    else
        printf("Test for %s begins:\n", pStr);

    Permutation(pStr);

    printf("\n");
}

int main(int argc, char* argv[])
{
    Test(nullptr);

    char string1[] = "";
    Test(string1);

    char string2[] = "a";
    Test(string2);

    char string3[] = "ab";
    Test(string3);

    char string4[] = "abc";
    Test(string4);
    system("pause");
    return 0;
}

 

转载于:https://www.cnblogs.com/CJT-blog/p/10500922.html


http://www.niftyadmin.cn/n/529797.html

相关文章

有关AS3编程的一些总结

最近用AS3写一些项目&#xff0c;在编程过程中&#xff0c;遇到不少问题&#xff0c;同时也有一些收获和心得。现在贴出来希望对大家在AS3编程有一些帮助。如果你发现有说得不对的地方&#xff0c;你可以指出来&#xff0c;大家一起来讨论。1、AS3的强制类型转换我之前一直以为…

symfony-表单学习

---恢复内容开始--- 构成表单的几个元素 1.数据模型 M 一种比较抽象的概念&#xff0c;按我的理解来说&#xff0c;本质上就是数据的一种存在形式&#xff0c;可以看做一个类&#xff0c;一般对这些模型进行crud操作。一种是真实存在的数据模型&#xff0c;最终要存储到数据库当…

flash+fcs使用音频时的一些知识

呵呵&#xff0c;这是老早的一些东西&#xff0c;被我翻了出来&#xff0c;随然老但还有用的价值&#xff0c;嘻嘻 通过flashfcs使用音频时的一些知识 我在7yue的论坛上发表过&#xff0c;拿到这里和大家共享&#xff0c;并换些闪点&#xff0c;这里的闪点太难挣了。 我搞flash…

[CH5302]金字塔

题面 虽然探索金字塔是极其老套的剧情&#xff0c;但是有一队探险家还是到了某金字塔脚下。经过多年的研究&#xff0c;科学家对这座金字塔的内部结构已经有所了解。首先&#xff0c;金字塔由若干房间组成&#xff0c;房间之间连有通道。如果把房间看作节点&#xff0c;通道看作…

关于工作职业、技能的心得体会(转自7yue)

看了七月写的体会之后&#xff0c;而之也是感触甚多&#xff01;特搬到俺 的地盘&#xff0c;以供日后细细口味&#xff01; 最近看到坛子里有很多朋友都在工作、职业、技能的相关帖子上说了不少&#xff0c;十之八九所表现出来的是郁闷和彷徨。我想我应该以一个入行(IT)10年的…

Java工程师学习指南 入门篇

Java工程师学习指南入门篇最近有很多小伙伴来问我&#xff0c;Java小白如何入门&#xff0c;如何安排学习路线&#xff0c;每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了&#xff0c;其实不然&#xff0c;因为我之前写的文章都是站在Java后端的全…

一个禁止flash右键的方法

在做一个实验时遇到一个禁止flash的右键功能的问题。在网上找了很多方法&#xff0c;要不就完全不行&#xff0c;要不就浏览器不兼容。Google了一下国外的情况&#xff0c;终于找到了一个不错的方法。该方法用了javascript和as的结合&#xff0c;完美解决了问题。 以下是javasc…

HTML-01-html

什么是HTML&#xff1a; HTML&#xff1a;HyperText Markup Language.即超文本标记语言。 HTML的基本结构&#xff1a; <!--这里使用 !DOCTYPE 来声明代码使用HTML5 标准编写标准声明大小写都可--> <!DOCTYPE HTML> <html><head><meta charset &…