【发布时间】:2010-10-24 22:01:43
【问题描述】:
这就是我正在做的:
字符串一 = “一些字符串”
字符串二 = “一些字符串”
我想知道字符串 one 和 two 中的所有字符,它们应该按照字符串 1 中的顺序排列
我编写了一个 Java 程序,它通过使用 Collections 对两个集合执行集合操作。
我想知道的是,执行集合运算的复杂度是多少,是多项式时间还是线性时间
我的程序在这里
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package careercup.google;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
*
* @author learner
*/
public class CharaterStringsIntersection {
private static final String one = "abcdefgabcfmnx";
private static final String two = "xbcg";
public static void main(String args[]){
List<Character> l_one = new ArrayList<Character>();
List<Character> l_two = new ArrayList<Character>();
for(int i=0; i<one.length(); i++){
l_one.add(one.charAt(i));
}
for(int j=0; j<two.length(); j++){
l_two.add(two.charAt(j));
}
l_one.retainAll(l_two);
Iterator iter = l_one.iterator();
while(iter.hasNext()){
System.out.println(" > " + iter.next());
}
}
}
输出:
run:
> b
> c
> g
> b
> c
> x
【问题讨论】:
-
你可以使用LinkedHashSet来获得一个Set的性能,同时保持顺序。注意:你只需要在第一个集合中保留顺序,第二个的顺序不重要??您需要保留重复项吗?如果是这样,第一个集合必须是一个列表,但第二个集合仍然可以是一个集合。
标签: java set complexity-theory