思路:在字符串中没有相同的字符时,可采用位运算,得到所有的字符组合。
根据字符串的长度,可得知字符组合的所有方式。
例:求出字符串“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;
}
}
采用二进制的位操作,当有相同字符出现时,会出现重复组合的现象