会飞的五花肉 2010-12-22 09:11
浏览 270
已采纳

字符串元素数组求并集

举个例子 [code="java"]

List a =new ArrayList();
a.add("abc");
a.add("a");
a.add("cb");
a.add("f");
a.add("ab");
[/code]
求,a列表中元素的并集。。(说明:不考虑元素的顺序位置)
正确的结果应该为{abc,f}.
请大家帮忙! :x

  • 写回答

4条回答 默认 最新

  • Hywel_Zhang 2010-12-23 17:36
    关注

    [code="java"]class Test5Main {
    private static List getList(List lia) {
    List lis = new ArrayList();
    List tem = new ArrayList();
    lis.add(lia.get(0));
    tem.add(lia.get(0));
    for (String str : lia.subList(1, lia.size())) {
    setValue(lis, tem, str);
    }
    return lis;
    }
    private static void setValue(List lis, List tem, String str) {
    boolean isInsert = true;
    for (String s1 : lis) {
    int re = getState(s1, str);
    if (re == 1) {
    tem.remove(s1);
    }
    if (re == -1) {
    isInsert = false;
    break;
    }
    }
    if (isInsert) {
    tem.add(str);
    }
    lis.clear();
    lis.addAll(tem);
    }
    private static int getState(String s1, String s2) {
    // s2包含于s1
    if (isContain(s1, s2)) {
    return -1;
    }
    // s2包含s1
    else if (isContain(s2, s1)) {
    return 1;
    }
    return 0;
    }
    private static boolean isContain(String s1, String s2) {
    for (int i = 0; i < s2.length(); i++) {
    if (s1.indexOf(s2.charAt(i)) == -1)
    return false;
    }
    return true;
    }
    public static void main(String[] args) {
    List a =new ArrayList();
    a.add("abc");
    a.add("a");
    a.add("cb");
    a.add("f");
    a.add("ab");
    for (String string : getList(a)) {
    System.out.println(string);
    }
    }

    }[/code]
    给你个看看吧,不懂再讨论吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?