717. 1-bit and 2-bit Characters
Description
We have two special characters:
- The first character can be represented by one bit
0. - The second character can be represented by two bits (
10or11).
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: 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.
Constraints:
1 <= bits.length <= 1000bits[i]is either0or1.
Solutions
Solution 1: Direct Traversal
We can directly traverse the first \(n-1\) elements of the array \(\textit{bits}\), and each time decide how many elements to skip based on the value of the current element:
- If the current element is \(0\), skip \(1\) element (representing a one-bit character);
- If the current element is \(1\), skip \(2\) elements (representing a two-bit character).
When the traversal ends, if the current index equals \(n-1\), it means the last character is a one-bit character, and we return \(\text{true}\); otherwise, return \(\text{false}\).
The time complexity is \(O(n)\), where \(n\) is the length of the array \(\textit{bits}\). The space complexity is \(O(1)\).
1 2 3 4 5 6 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |