LeetCode 717. 1比特与2比特字符(C、C++、python)

有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。

现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。

示例 1:

输入: 
bits = [1, 0, 0]
输出: True
解释: 
唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。

示例 2:

输入: 
bits = [1, 1, 1, 0]
输出: False
解释: 
唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。

注意:

1 <= len(bits) <= 1000.

bits[i] 总是0 或 1.

C

bool isOneBitCharacter(int* bits, int bitsSize) 
{
    int n=bitsSize;
    int tmp=0;
    for(int i=0;i<n-1;i++)
    {
        if(1==bits[i])
        {
            if(1==tmp)
            {
                tmp=0;
            }
            else
            {
                tmp=1;
            }
        }
        else
        {
            if(1==tmp)
            {
                tmp=0;
            }
        }
    }
    return 0==tmp;
}

C++

class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) 
    {
        int n=bits.size();
        stack<int> tmp;
        for(int i=0;i<n-1;i++)
        {
            if(1==bits[i])
            {
                if(tmp.empty())
                {
                    tmp.push(1);
                }
                else
                {
                    tmp.pop();
                }
            }
            else
            {
                if(!tmp.empty())
                {
                    tmp.pop();
                }
            }
        }
        return true==tmp.empty();        
    }
};

python

class Solution:
    def isOneBitCharacter(self, bits):
        """
        :type bits: List[int]
        :rtype: bool
        """
        n=len(bits)
        tmp=0
        for i in range(0,n-1):
            if 1==bits[i]:
                if 0==tmp:
                    tmp=1
                else:
                    tmp=0
            else:
                if 1==tmp:
                    tmp=0
        return 0==tmp

猜你喜欢

转载自blog.csdn.net/qq_27060423/article/details/83990568