程序员面试题精选100题-字符串的组合[算法]
题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
分析:在本系列博客的第28题《字符串的排列》中,我们详细讨论了如何用递归的思路求字符串的排列。同样,本题也可以用递归的思路来求字符串的组合。
假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;而是不把这个字符放到组合中去,接下来我们需要在剩下的.n-1个字符中选择m个字符。这两种选择都很容易用递归实现。下面是这种思路的参考代码:
void Combination(char* string)
{
if(string == NULL)
return;
int length = strlen(string);
vector
for(int i = 1; i <= length; ++ i)
{
Combination(string, i, result);
}
}
void Combination(char* string, int number, vector
{
if(number == 0)
{
vector
for(; iter < (); ++ iter)
printf("%c", *iter);
printf("");
return;
}
if(*string == )
return;
_back(*string);
Combination(string + 1, number - 1, result);
_back();
Combination(string + 1, number, result);
}
由于组合可以是1个字符的组合,2个字符的字符……一直到n个字符的组合,因此在函数void Combination(char* string),我们需要一个for循环。另外,我们一个vector来存放选择放进组合里的字符。
-
学生会文艺部面试问题
学生会文艺部面试问题1一、才干、才能1、请先自我介绍一下(系别、班级、姓名以及目前担任班里的职务)2、可以谈谈自己的兴趣、爱好、特长?(必要的现场秀一下)3、除了学生会,你还进了什么社团吗?4、以前有参加过、组织过、策划过什么活动吗?可以是多方面的,不仅仅是文艺...
-
2022年面试的自我评价通用15篇
在我们平凡的日常里,我们经常遇到需要写自我评价的情况,自我评价在很大程度上还会自我督促,促使我们维持自我的一致性。怎样写自我评价才合理、得体呢?下面是小编为大家收集的2022年面试的自我评价,欢迎大家借鉴与参考,希望对大家有所帮助。2022年面试的自我评价1面...
-
面试的自我评价(集锦15篇)
在平平淡淡的日常中,我们最不陌生的就是自我评价了,自我评价不仅影响社会中人与人的交往方式,而且影响社会中人的心理健康程度,影响人的价值观和人生观的合理程度。如何写自我评价才合适呢?下面是小编收集整理的面试的自我评价,欢迎阅读,希望大家能够喜欢。面试的自我...
-
销售面试介绍
销售面试介绍1大家下午好!我是来自邕江大学金融营销专业的。我喜欢读书看报,因为它能丰富我的知识;我喜欢跑步,因为它可以磨砺我的意志,我到底是个什么样的人呢?我是一个活泼开朗、热情、执着、有坚强意志的人。既然今天竞聘的是营销经理一职,我想谈谈自己对营销的理...