有26个字母a-z,找出所有字母组合,a、b、c、ab、abc、a~z 都是一个组合(顺序无关)
import java.util.HashSet;
public class Test05_3 {
public static void main(String[] args) {
// 26个字母a~z
char[] letter = new char[26];
for (int i = 0; i < letter.length; i++) {
letter[i] = (char) ('a' + i);
}
// 可以组成的字母组合的个数 2^26 -1
int count = (int) Math.pow(2, letter.length) - 1;
// System.out.println(count);
// 验证字母组合,可以不要,把这些字母组合用集合存储起来
// HashSet<String> arrays = new HashSet<String>();
// 每一次变化都可以组成一个新的字母组合,可以直接输出
for (int i = 1; i <= count; i++) {
int index = 0;
// StringBuffer sb = new StringBuffer();
for (int j = i; j > 0; j /= 2) {
if (j % 2 == 1) {
// sb.append(letter[index]);
System.out.print(letter[index]);
}
index++;
}
System.out.println();
// arrays.add(sb.toString());
// System.out.println(sb.toString());
}
// 26个字母可以组成的字母组合的总数 67108863
// System.out.println(arrays.size());
}
}