gpt4 book ai didi

java - 在另一个字符串中查找字符串子集的最快方法?

转载 作者:行者123 更新时间:2023-12-01 04:43:15 24 4
gpt4 key购买 nike

我正在解码由霍夫曼编码制作的字节文件,我将字节转换为字符串,然后搜索霍夫曼树给出的值。我有一个哈希表,其中包含原始文件的编码值和字节值。这是我的代码。

for(int i = 0, j = 1; j <= encodedString.length(); j++){

if(huffEncodeTable.get( encodedString.substring(i, j)) != null){

decodedString.append(huffEncodeTable.get( encodedString.substring(i, j)));
i = j;

}

它非常简单,它是一个遍历所有字符串的循环,当字符串太大时就会出现问题,-压缩文件大小大于100KB-它需要很长时间来处理它们,所以我想知道它是否是一种以更快的方式完成此过程的方法,或者是否最好将我的编码值存储在另一个结构而不是 hastable 中。

huffEncodeTable -> 哈希表

encodedString -> 带有霍夫曼值的字符串

decodedString -> 表示原始文件的原始字节的字符串

最佳答案

一些建议:

每次追加到字符串时,都会创建一个新字符串。您应该使用 StringBuilder 来代替。在我看来,这可能是主要问题。

此外,我会使用 hashtable.containsKey 而不是 get 来检查 key 是否存在。但我怀疑它会对你的表现产生很大影响。

如果将调用结果存储到子字符串中,则可能会节省一些时间,因此只需调用一次。

所以,类似的事情。

StringBuilder sb = new StringBuilder()
String currentString;
for(int i = 0, j = 1; j <= encodedString.length(); j++){
currentString = encodedString.substring(i, j)
if(huffEncodeTable.containsKey( currentString )){

sb.append(huffEncodeTable.get( currentString ));
i = j;

}
}
return sb.toString(); //Or whatever you do with it.

关于java - 在另一个字符串中查找字符串子集的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com