所以我一直在做一项任务。我有两个巨大的字符串,都是由刚刚打乱的相同字符组成的。任务是找到您可以进行的最低数量的更改,以将第一个字符串转换为另一个字符串,而1个更改=切换字符串中的相邻字符。我找到了一个很好的解决方案,但有一个问题。它只能在5秒内输入大约100,000个字符串。我需要使它的工作高达1000,000个字符。我尝试了ArrayList,LinkedList,正则数组,子串和算法的不同变体,这是到目前为止我想出的最好的一个,但是我没有想法。有什么帮助吗?有没有我可以使用的更快的集合?也许这里的算法是错的?
"jas“ArrayList是第一个转换成列表的字符串,"mal”是另一个。“step”是输出
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);提前感谢您的任何想法!
发布于 2018-04-19 16:16:26
我知道这里有点离题(你应该去codereview),但我的想法是使用一些已经在Java语言中实现的东西,比如: listToSort.sort(Comparator.comparing(listWithOrder::indexOf));转到函数,函数,并查看它们,你可以把它们拿出来,并在此基础上创建自己的计数,或者从中得到启发。
我相信,无论在那里实现什么,都可能非常快。
https://stackoverflow.com/questions/49915310
复制相似问题