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: 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.
Note:
1 <= len(bits) <= 1000
.bits[i]
is always0
or1
.
1 public class Solution { 2 public bool IsOneBitCharacter(int[] bits) { 3 // Optimization: if the last bit is not 0, return false immediately 4 if (bits[bits.Length - 1] != 0) return false; 5 6 int i = 0; 7 while (i < bits.Length) 8 { 9 if (bits[i] == 1)10 {11 i += 2;12 }13 else if (i == bits.Length - 1)14 {15 return true;16 }17 else18 {19 i++;20 } 21 }22 23 return false;24 }25 26 }