gpt4 book ai didi

Java Huffman树代码 "Decode"方法不起作用

转载 作者:行者123 更新时间:2023-12-01 19:43:35 25 4
gpt4 key购买 nike

我已经研究这个方法有一段时间了,我很确定这是一个简单的解决方案。我一生都无法弄清楚为什么每当我传递 [false, true, true, false, false, false, false,假,真,真,假,真,假,真,假,假,真,真,假,假,真,真,真,假,真,真]。由于某种原因,“g”永远不会出现在字符串上,我似乎无法弄清楚为什么。

public String decodeIter(boolean[] coding)
{
String str = "";
Node current = root;
int i = 0;
while(i < coding.length)
{
if(current != null)
{
if(current.left == null && current.right == null)
{
LeafNode leaf = (LeafNode) current;
str += leaf.data;
current = root;
} else {
if(coding[i] == true)
{
current = current.right;
i++;
} else {
current = current.left;
i++;
}
}
}
}

return str;
}

任何帮助将不胜感激。

最佳答案

问题是,当您阅读编码中的最后一个条目并将您定向到您的角色时,您立即 i++,这将使循环中的 while 条件为假,因此最后一个 str+= 永远不会被调用因为它的状况从未被测试过。可能有更简洁的补救措施,但一种方法是在 return str 之前插入以下内容。

if(current!= null && current.left == null && current.right == null)//short circuit prevents dereferencing null pointer
{
LeafNode leaf = (LeafNode) current;
str += leaf.data;
//no need to set current = root, we are leaving anyway
}

这应该会为你捕获最后一个字符。

关于Java Huffman树代码 "Decode"方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59148696/

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