字符串中字符的所有组合(组合中的先后顺序不考虑)

Posted ZDF0414

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串中字符的所有组合(组合中的先后顺序不考虑)相关的知识,希望对你有一定的参考价值。

思路:在字符串中没有相同的字符时,可采用位运算,得到所有的字符组合。

                  根据字符串的长度,可得知字符组合的所有方式。

例:求出字符串“abc”字符的所有组合方式?

      分析: (1)长度等于3

                  (2)即可用3个二进制位表示这三个字符

                  (3)3个二进制位共有7种组合方式(001、010、011、100、101、110、111)

                              (4)判断每个组合的3个位的存在情况,存在即输出相应字符


void Combination(char* str)

	int len = strlen(str);
	int total = 1 << len;
	for (int i = 1; i < total; i++)
	
		for (int j = 0; j < len; j++)
		
			if ((i >> j) & 1)
				cout << str[j];
		
		cout << endl;
	
采用二进制的位操作,当有相同字符出现时,会出现重复组合的现象

以上是关于字符串中字符的所有组合(组合中的先后顺序不考虑)的主要内容,如果未能解决你的问题,请参考以下文章

Python 轻松解决从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合。(对比用库和不用库的方法)

含有重复字符的字符串排列组合

删除重复的组合(不考虑顺序)

经典算法——字符串的所有组合

剑指offer-字符的所有组合,复制复杂链表,二叉树中和为某一值的路径

字符串中字符的所有组合(递归方式)