1. 程式人生 > >LeetCode-717. 1-bit and 2-bit Characters

LeetCode-717. 1-bit and 2-bit Characters

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 always 0 or 1.

1.從頭掃描整個整陣列,0可以單獨一個字元表示,1必須兩個字元表示。

class Solution {
    public boolean isOneBitCharacter(int[] bits) {
        int lens=bits.length,i;
        for(i=0;i<lens-1;) {
        	if(bits[i]==0)i++;
        	if(bits[i]==1)i+=2;
        }
    	return i==lens-1;
    }
}

2.從檢查陣列末尾

如果是00則肯定true,因為沒有兩個字元可以表示00;

如果是10則統計連續的1的個數,連續1的個數為奇數則為false 個數為偶數則為true。

class Solution {
    public boolean isOneBitCharacter(int[] bits) {
        int ones = 0;
        //Starting from one but last, as last one is always 0.
        for (int i = bits.length - 2; i >= 0 && bits[i] != 0 ; i--) { 
            ones++;
        }
        if (ones % 2 > 0) return false; 
        return true;
    }
}