1

jersey我使用API检索了 200 条推文。我想找到两条带有longest common substring. 这就是我所拥有的。tweetList是一个ArrayList对象TweetcomapreTweets方法比较推文对象的最长子字符串。

Tweet t1=new Tweet();Tweet t2=new Tweet();
    int longestString=0;

    for(int i=0;i<tweetList.size();i++)
    {int store=0;Tweet comparer=null;
        for(int j=i+1;j<tweetList.size();j++)
        {
            if(j!=i){
            int result=tweetList.get(i).compareTweets(tweetList.get(j));
            if(result>store){
                store=result;
                comparer=tweetList.get(j);
            }}
        }
        if(longestString<store)
        {
            longestString=store;
            t1=tweetList.get(i); t2=comparer;
        }
}

如果我检索 200 条推文,那么这将循环大约。40000 次。我需要一种更有效的方法。

编辑 这个循环还以倒序比较相同的推文假设我的tweetList包含{a,b,c,d}; 什么时候i=1j=3比较是在 之间b & d;当i=3j=1比较是d & b。如何避免这种情况。

SOLUTION而不是j=0它应该是j=i+1. 它循环了很多19701次。

4

1 回答 1

0
199 + 198 + ... + 1 = 19900

我相信这19900 times是一个明智的答案。循环中近一半的比较是多余的。您只需将第一个与剩余的 199 条推文进行比较,将第二个与剩余的 198 条推文进行比较,依此类推。比 19900 倍更好的进一步优化是可能的,但我想不出一个。

于 2012-12-01T05:04:34.210 回答