题目:有趣算法-a到z所有组合情况,不管顺序,不存在重复.
我的想法:
- 利用26位来标记a-z字母
- int totalLen:总情况数为26个1->{111…111}
- 遍历总totalLen,输出情况:
- 代码:
int a = 1;
int b = a<<1;
int c = a<<2;
.
.
.
int z = a<<25;
int totalLen = 0;
//将a-z标记放入数组中;
int allCs[] = new int[26];
char cs[] = new char[]{'a',...,'z'};
for(int i=0;i<26;i++){
allCs[i]=(1<<(i));
}
//计算总totalLen
for (int i = 1, i<26,i++) {
int totalLen |= allCs[i];
}
//先空出一行,为了美观
System.out.println();
//开始打印
for (int i = 1; i<totalLen;i++) {
for(int j=0;j<26;j++){
//i化成2进制,对应位置上的字母情况打印
if((i&allCs[j])!=0) {
System.out.print(cs[j]);
}
}
//输出完一种组合,换行
System.out.println();
}