我正在解码由huffman编码产生的字节文件,我将字节转换为字符串,然后搜索huffman树给出的值。我有一个哈希表与原始文件的编码值和字节值。这是我的代码。在另一个字符串中查找字符串子集的最快方法?
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;
}
它很简单,它是itterates在所有的串回路,问题就来了,当串中的过大,-with压缩尺寸是100KB-它需要很长的时间来处理他们的文件,所以我想知道它是否以更快的方式使这个过程的方式,或者如果它更好地将我的编码值存储在另一个hastable的结构体系中。
huffEncodeTable - >散列表
encodedString - > String与霍夫曼值
decodedString - >将代表原始文件
我会将你的结果与内置的huffman编码进行比较(尽管大多数代码是使用本地代码实现的)内置压缩还使用算术编码,可以使数据再次变小。标准压缩的搜索范围有多远。 4 KB。这也使编码回看起来更容易。 – 2013-04-24 20:32:08
我只使用了哈夫曼,它真的很好压缩som类型的文件,但是我没看到的是这个循环需要很长时间,所以我问什么我应该在这里改变。 – Pedro 2013-04-24 20:38:50
内置的huffman编码可以支持多GB文件,而不需要花费更长的时间,所以如果是这样做的话,我怀疑你有一个bug(如果只是一个性能bug)额外的算术压缩可以使它再次变小2到10倍。 – 2013-04-24 20:44:27