有两个字符串数组,list1和list2,打印出不在对方数组中的对象;
如打印出:“ list1——‘ABC’ ”,意思是list1有个字符串‘ABC’不在list2中。
算法实现怎么做效率比较高?
list1 : ABC, MM
list2 : DEF ,MM
输出结果:
 list1——‘ABC’ 
 list2——‘DEF’ 

解决方案 »

  1.   

    KMP(看毛片)算法
    http://blog.pfan.cn/rickone/15762.html
      

  2.   

    public class T { /**
     * @param args
     */
    public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("abcd");
    list.add("mm");

    List<String> list2 = new ArrayList<String>();
    list2.add("dfd");
    list2.add("mm");

    for(int i=0; i<list.size();i++){
    String str = list.get(i);
    if(list2.contains(str)){
    list2.remove(str);
    } else {
    System.out.println("list1: "+str);
    }
    }

    for(int i=0;i<list2.size();i++){
    System.out.println("list: "+list2.get(i));
    }
    }}
      

  3.   

    我觉得放到List中再用contains()方法的效率不高,因为本来contains()本身就是一个循环对比吧,这样比直接拿两数组比效率更低。。多了个赋值过程