Skip to main content

1-bit and 2-bit Characters

Problem statement

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).

Given a binary array bits that ends with 0, return true if the last character must be a one-bit character.

Example 1:

Input: bits = [1,0,0]Output: trueExplanation: 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: falseExplanation: The only way to decode it is two-bit character and two-bit character.So the last character is not one-bit character.

Constraints:

  • 1 <= bits.length <= 1000
  • bits[i] is either 0 or 1.

My solution

/**
* @param {number[]} bits
* @return {boolean}
*/
var isOneBitCharacter = function(bits) {
let i = 0;
let len = bits.length - 1
while (true) {
if (bits[i] === 0) {
i++;
if (i > len) {
return true;
}
} else {
i += 2;
if (i > len) {
return false;
}
}
}
};