【发布时间】:2018-02-25 17:14:57
【问题描述】:
当我尝试比较两个字符串时遇到了一些麻烦。 我的第一个字符串是一个单词,我的第二个字符串是一些构成我的单词的字母,例如:
String 1, my word: "test"
String 2, my soup: "adhesljdtth"
在这种情况下,我得到了两个字符串的所有字符,并开始处理它们,当我在我的汤中发现一些属于我的单词的字符时,我需要从我的汤中删除它,然后转到下一个元素。
我找到了一些方法来比较它并使用以下方法获得结果:StringBuilder、LinkedList、数组等,它们都适用于小字符串,但是当我得到一个包含一百万个字符的字符串时,我遇到了一些性能问题。在这种情况下,我尝试使用二分搜索,但即使这样处理我的结果也需要很长时间。
我正在使用 Array.sort 函数对我的两个字符串进行排序。
为了验证soup 是否有所有的字母来构成我的单词,我正在这样做:
for (int i = 0; i < wordLenght; i++) {
char key = wordCharList[i];
int length = soupCharList.size();
int low = 0;
int high = length - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
char midVal = soupCharList.get(mid);
if (midVal < key) {
low = mid + 1;
}
else if (midVal > key) {
high = mid - 1;
}
else if(midVal == key) {
soupCharList.remove(mid);
break;
}
if(high == -1) {
return false;
}
}
}
return true;
}
您有什么想法可以将其与更好的性能进行比较吗?
【问题讨论】:
标签: java arrays string performance linked-list