向量的所有子组 - 使用迭代器

时间:2014-04-20 08:04:37

标签: java string vector

我有一个字符串向量,我试图创建一个返回向量的所有子组的函数,所以如果像这样创建我的向量:

Vector<String> vec = new Vector<String>();
vec.add("a");
vec.add("b");
vec.add("c");
powerSet(vec); 

我希望该子组将返回所有子组 - {},{&#34; a&#34;},{&#34; b&#34;},{&#34; c&#34;},{& #34;&#34;&#34; b&#34;},{&#34; C&#34;&#34; b&#34;},{&#34;&#34;&# 34; C&#34;},{&#34;&#34;&#34; b&#34;&#34; C&#34;}

那是递归方式:

powerSet功能

public static Vector<Vector<String>> powerSet(Vector<String> originalSet) {
    Vector<Vector<String>> sets = new Vector<Vector<String>>();
    if (originalSet.isEmpty()) {
        sets.add(new Vector<String>());
        return sets;
    }
    List<String> list = new ArrayList<String>(originalSet);
    String head = list.get(0);
    Vector<String> rest = new Vector<String>(list.subList(1, list.size())); 
    for (Vector<String> set : powerSet(rest)) {
        Vector<String> newSet = new Vector<String>();
        newSet.add(head);
        newSet.addAll(set);
        sets.add(newSet);
        sets.add(set);
    }       
    return sets;
}

表现对我很重要,所以我正在寻找一种迭代的方式。 知道怎么转换吗?

0 个答案:

没有答案
相关问题