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;
    }
}


猜你喜欢

转载自blog.csdn.net/ZHOUBEISI/article/details/79431413