小编Kie*_*ran的帖子

PHP霍夫曼解码算法

我最近申请了一份工作,并在几个问题上发了一个hackerrank考试.其中一个是霍夫曼解码算法.有可用的类似的问题在这里这也解释了格式化好了很多,然后我可以.

实际的任务是获取两个参数并返回已解码的字符串.

第一个参数是代码,它是一个字符串数组,如:

[
    "a      00",
    "b      101",
    "c      0111",
    "[newline]      1001"
]
Run Code Online (Sandbox Code Playgroud)

这就像:单个字符,两个标签,霍夫曼代码.

由于黑客级别的设置方式,新行被指定为采用此格式.

第二个参数是使用代码解码的字符串.例如:

101000111 = bac
Run Code Online (Sandbox Code Playgroud)

这是我的解决方案:

function decode($codes, $encoded) {
    $returnString = '';
    $codeArray = array();

    foreach($codes as $code) {
        sscanf($code, "%s\t\t%s", $letter, $code);
        if ($letter == "[newline]")
            $letter = "\n";
        $codeArray[$code] = $letter;
    }
    print_r($codeArray);

    $numbers = str_split($encoded);
    $searchCode = '';
    foreach ($numbers as $number) {
        $searchCode .= $number;
        if (isset($codeArray[$searchCode])) {
            $returnString .= $codeArray[$searchCode];
            $searchCode = '';
        }
    }

    return $returnString;
} …
Run Code Online (Sandbox Code Playgroud)

php huffman-code

5
推荐指数
1
解决办法
963
查看次数

标签 统计

huffman-code ×1

php ×1