思路:在字符串中没有相同的字符时,可采用位运算,得到所有的字符组合。
根据字符串的长度,可得知字符组合的所有方式。
例:求出字符串“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;
}
}采用二进制的位操作,当有相同字符出现时,会出现重复组合的现象
本文介绍了一种利用位运算的方法来获取给定字符串中所有可能的字符组合方式。通过二进制位的不同组合来表示字符串中各个字符是否出现在组合中,有效解决了无重复字符的字符串组合问题。
&spm=1001.2101.3001.5002&articleId=52063801&d=1&t=3&u=92944f0604a14e2195197275f6d7df1d)
90

被折叠的 条评论
为什么被折叠?



