zoukankan      html  css  js  c++  java
  • 《剑指offer》第三十八题(字符串的排列)

    // 面试题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 == '')
        {
            printf("%s
    ", pStr);
        }
        else
        {
            for (char* pCh = pBegin; *pCh != ''; ++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:
    ");
        else
            printf("Test for %s begins:
    ", pStr);
    
        Permutation(pStr);
    
        printf("
    ");
    }
    
    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;
    }

  • 相关阅读:
    LR在CTR中的实践经验
    我的新书:《工业机器学习算法详解与实战》
    XSS漏洞解析(一)
    netty 解决TCP粘包与拆包问题(二)
    java实现ftp文件的上传与下载
    webService-cxf
    centos7下安装gitlab
    完全卸载删除gitlab
    tomcat 在widows的下的一些常见配置
    JAVA中使用JSch库实现SSH功能
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10500922.html
Copyright © 2011-2022 走看看