所以我一直在做一项任务。我有两个巨大的字符串,都是由相同的字符组成的。任务是找到可以在另一个中转换第一个字符串的尽可能少的更改,而1更改=在字符串中切换邻居字符。我发现一个解决方案工作正常,但有一个问题。它仅在5秒内工作,仅输入大约10万个字符串。我需要让它最多可以工作1000 000个字符。我尝试了ArrayList,LinkedList,常规数组,子串和algorythm的不同变体,这是迄今为止我提出的最好的但是我没有想法。有帮助吗?我可以使用更快的收藏吗?也许这里的algoryth错了?
“jas”ArrayList是第一个转换为列表的字符串 “mal”是另一个。 “steps”是输出
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);
提前感谢任何想法!
答案 0 :(得分:0)
我知道它有点偏离主题(你应该去codereview),但我得到的想法是使用已经在Java中实现的东西,如: listToSort.sort(Comparator.comparing(listWithOrder ::的indexOf)); 转到功能并查看它们,您可以将它们取出并根据它创建自己的功能并在其中进行计数或通过它进行激励。
我相信无论实施什么,都可能非常快。