Char数组中字母的组合

时间:2011-12-22 23:57:44

标签: java

我有一个A,B,C的char数组,我想将输出打印为:

A,B,C,AB,AC,BC,ABC

任何建议都将受到赞赏......

public class CharArray {
    public static void main(String[] args) {
        char alpha[] = {'A', 'B', 'C'};
        for(char s : alpha) {
                    //what to do now
        }

    }

}

2 个答案:

答案 0 :(得分:5)

这会打印组合,如您的示例所示,而不是排列,就像在问题标题中一样。

char alpha[] = {'A', 'B', 'C'};
for (int m = 1 ; m != 1<<alpha.length ; m++) {
    for (int i = 0 ; i != alpha.length ; i++) {
        if ((m & (1<<i)) != 0) {
            System.out.print(alpha[i]);
        }
    }
    System.out.println();
}

答案 1 :(得分:0)

另一个需要考虑的选择是guava(谷歌的一个开源java库)。

设置(设置实用程序类)

/**   Returns the set of all possible subsets of set. For example, powerSet(ImmutableSet.of(1, 2)) returns the set {{}, {1}, {2}, {1, 2}}... */
        public static <E> Set<Set<E>> powerSet(Set<E> set)

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Sets.html#powerSet(java.util.Set)