【发布时间】: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