关于leetcode:Leetcode-PHP题解D126-717-1bit-and-2bit-Characters

D126 717. 1-bit and 2-bit Characters

题目链接

717. 1-bit and 2-bit Characters

题目剖析

这道题目的形容很难懂,我看了Discussion区别人解释才看懂了。

当初采纳2位的霍夫曼编码,即:只有0、10和11三种。

给定一个数组,每一个值为1位。当初固定最初一位为0,判断这最初一位是1位的还是2位的。即:是10的0,还是0的0。

解题思路

思考应用栈来实现,遇到1则入栈,0则把“最初一位为1位编码”标记置1。如果栈里曾经有值了,阐明以后是2位编码。把标记置0。

最终代码

<?php
class Solution {

    /**
     * @param Integer[] $bits
     * @return Boolean
     */
    function isOneBitCharacter($bits) {
        $stack = [];
        $isOneBit = false;
        foreach($bits as $bit){
            if(isset($stack[0])){
                array_pop($stack);
                $isOneBit = false;
            }
            else{
                if($bit == 1){
                    $stack[] = $bit;
                }
                else{
                    $isOneBit = true;
                }
            }
        }
        
        return $isOneBit;
    }
}

若感觉本文章对你有用,欢送用爱发电赞助。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理