我正在尝试有效地为一组给定字符构造一个二进制后缀代码及其概率(即一组单词,其中没有一个是任何其他单词的后缀).
我的基本思想是使用霍夫曼算法的实现来构造前缀代码.通过反转代码字,我得到一个无后缀的代码.虽然这个解决方案正在工作,但它似乎不是最佳的,因为我必须反转可变长度的代码字(因此我需要一个结合了位移的查找表).
有没有办法修改霍夫曼算法,以便更有效地创建后缀代码?
function reverse1(str){
var a = "";
for(var i = 0; i <= str.length/2; i++){
a = str[i];
str[i] = str[str.length-i-1];
str[str.length-i-1] = a;
}
return str;
}
var str = "abcdef";
reverse1(str);
Run Code Online (Sandbox Code Playgroud)
我想在不使用任何内置函数的情况下反转字符串,并且希望它更改原始字符串本身,但效果不佳。语言是Javascript。