码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer+名企面试官精讲典型编程题,28题扩展题

时间:2018-06-07 20:46:12      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:margin   jvm   turn   jmh   uga   wpf   成长   ktv   1nf   

题目28扩展:求字符的所有组合
  eg:abc对应的组合a,b,c;a,b,c,ab,ac,bc,abc
思路:分两步:n-1个字符串中长度为m-1的组合;n-1个字符的长度中长度为m的组合
  eg:3个字符abc,组成长度为1的组合 a -> (b,c)中取长度0的组合;(b,c)中取长度1的组合
     (b,c)中取长度1的组合 b -> (c)中取长度0的组合; (c)中取长度1的组合
      最终就是a,b,c
递归出口:长度=0或者字符串到达末尾'\0'。
#include<iostream>
#include<string>
using namespace std;
void Combination(char* str,int length);
void combination(char* str,int length,string result);
void test(char* str,int length);
void test(char* str,int length)
{
        if(NULL==str)
                cout<<"origin str is NULL"<<endl;
        else
        cout<<"origin str="<<str<<endl;
        Combination(str,length);
}

void combination(char* str,int length,string result)
{
        if(*str=='\0'||length==0)
        {
                cout<<result<<endl;
                return ;
        }
        string tmp = result + *str;
        if( strlen(str+1)>=length-1 )
        {
                combination(str+1,length-1,tmp);
        }
        if(strlen(str+1)>=length)
        {
                combination(str+1,length,result);
        }
}
void Combination(char* str,int length)
{
        if(NULL==str||length<=0)
                return;
        string res;
        for(int idx = 1;idx<=length;++idx)
        {
                combination(str,idx,res);
        }
}
int main()
{
        char str[] = "abc";
        test(str,strlen(str));
        cout<<endl;

        char str2[] = "ab";
        test(str2,strlen(str2));
        cout<<endl;

        char* str3 = NULL;
        test(str3,0);
        cout<<endl;

        char str4[] = "";
        test(str4,1);
        cout<<endl;

        char str5[] = "a";
        test(str5,2);
        cout<<endl;

        system("pause");
}
技术分享图片


剑指offer+名企面试官精讲典型编程题,28题扩展题

标签:margin   jvm   turn   jmh   uga   wpf   成长   ktv   1nf   

原文地址:https://www.cnblogs.com/meihao1203/p/9152579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!