【问题标题】:Java Code optimization - Fastest list to search and remove?Java 代码优化 - 搜索和删除最快的列表?
【发布时间】:2018-09-29 14:48:09
【问题描述】:

所以我一直在处理一项任务。我有两个巨大的字符串,它们都由刚刚加扰的相同字符组成。任务是找到尽可能少的更改以将第一个字符串转换为另一个字符串,而 1 更改 = 切换字符串中的相邻字符。我找到了一个很好的解决方案,但是有一个问题。它仅适用于大约 100 000 个字符字符串的输入,时间不到 5 秒。我需要让它工作多达 1000 000 个字符。我尝试了 ArrayList、LinkedList、常规数组、子字符串和算法的不同变体,这是迄今为止我想出的最好的一个,但我没有想法。有什么帮助吗?我可以使用更快的集合吗?也许这里的算法是错误的?

"jas" ArrayList 是第一个转换成列表的字符串 “mal”是另一个。 “步骤”是输出

int steps=0;
int index=0;
while(jas.size()>1) {
    if(jas.get(0)!=mal.get(index)) {
        int distance = jas.indexOf(mal.get(index));         
        jas.remove(distance);
        steps+=distance;                
    } else {
          jas.remove(0);
      }
    index++;        
}       
System.out.println(steps);

提前感谢您的任何想法!

【问题讨论】:

标签: java string collections substring large-data


【解决方案1】:

我知道这里有点离题(你应该去 codereview),但我的想法是使用已经在 J​​ava 中实现的东西,比如: listToSort.sort(Comparator.comparing(listWithOrder::indexOf)); 转到函数并查看它们,您可以将它们取出并在此基础上创建自己的函数,并在那里进行计数或从中获得启发。

我相信无论在那里实现什么都可能非常快。

【讨论】:

  • 这更适合作为评论而不是答案。
  • 我没有足够的代表发表评论,但我 100% 同意。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
相关资源
最近更新 更多