我正在为我的Huffman类编写一个解码方法,它应该解码0和1的字符串以找到原始的消息/字符串。但我似乎无法正确解码字符串。
我的解码方法:
xsl:element
我决定在一个简单的'a'字符串上测试我的代码:
原始字符串长度为1
编码字符串(长度为4),压缩为0.25
1010
现在我们尝试从编码的字符串重构原始文件
糟糕。有一个问题。解码后的字符串是:字母[letter = a,frequency = 6.5336]
编码和遍历是正确的;解码方法在某处。我想知道它是否与这行代码有关:
public String decode(String huffString) {
// TODO: Fill in this method
int position = 0;
BinaryTreeNode current = this.root;
String output = "";
while(position < huffString.length()){
if(huffString.charAt(position) == '0'){
current = current.left;
if(current.left == null && current.right == null){
output+= current.getElement();
current = this.root;
}
}
else
{
current = current.right;
if(current.left == null && current.right == null){
output+= current.getElement();
current = this.root;
}
}
position++;
}
return output;
}
}
任何人都可以帮助我吗?
编辑:正确输出的一个例子应该是:
输入字符串(END退出) - &gt;你好!
[...]
现在我们尝试从编码的字符串重构原始文件
有效!字符串是:你好那里