1. 程式人生 > 其它 >Leetcode 717. 1 位元與 2 位元字元(可以,一次過)

Leetcode 717. 1 位元與 2 位元字元(可以,一次過)


有兩種特殊字元:

第一種字元可以用一位元 0 表示
第二種字元可以用兩位元(10 或 11)表示
給你一個以 0 結尾的二進位制陣列 bits ,如果最後一個字元必須是一個一位元字元,則返回 true 。

示例 1:

輸入: bits = [1, 0, 0]
輸出: true
解釋: 唯一的解碼方式是將其解析為一個兩位元字元和一個一位元字元。
所以最後一個字元是一位元字元。

示例 2:

輸入:bits = [1,1,1,0]
輸出:false
解釋:唯一的解碼方式是將其解析為兩位元字元和兩位元字元。
所以最後一個字元不是一位元字元。

提示:

  • 1 <= bits.length <= 1000
  • bits[i] 為 0 或 1

Code:

class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
        if(bits[bits.size()-1]!=0)
            return false;
        for(int i=1;i<bits.size();)
        {
            if(bits[i-1]==1&&(bits[i]==0||bits[i]==1))
            {
                bits.erase(bits.begin());
                bits.erase(bits.begin());
                if(bits.size()==0)
                    return false;
            }
            else
            {
                bits.erase(bits.begin());
                if(bits.size()==0)
                    return true;
            }
            
        }
        return true;
    }
};