1. 程式人生 > >717. 1-bit and 2-bit Characters(python+cpp)

717. 1-bit and 2-bit Characters(python+cpp)

題目:

We have two special characters. The first character can be represented by one bit 0. The second character can be represented by two bits (10 or 11). Now given a string represented by several bits. Return whether the last character must be a one-bit character or not. The given string will always end with a zero. Example 1:

Input:  bits = [1, 0, 0] 
Output: True 
Explanation:  The only way to decode it is two-bit character and one-bit 
character. So the last character is one-bit character. 

Example 2:

Input:  bits = [1,1, 1, 0] 
Output: False 
Explanation:  The only way to decode it is two-bit character and two-bit 
character. So the last character is NOT one-bit character. 

Note: 1 <= len(bits) <= 1000. bits[i] is always0 or 1.

解釋: 若當前bit為1,則下一個不用判斷,可以直接跳過,若最後剩下了1bit,則該bit必定為0,返回true,若list初始長度就為1,則該bit必定為0,返回true。 python程式碼:

class Solution(object):
    def isOneBitCharacter(self, bits):
        """
        :type bits: List[int]
        :rtype: bool
        """
        if
len(bits)==1: return True i=0 while i<len(bits): if i==len(bits)-1: return True if bits[i]==1: i+=2 else: i+=1 return False

c++程式碼:

class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
        if(bits.size()==1)
            return true;
        int i=0;
        while (i<bits.size())
        {   if (i==bits.size()-1)
                return true;
            if (bits[i]==1)
                i+=2;
            else
                i+=1;
        }
        return false;
        
    }
};

總結: