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
or11
).
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 <= 1000
bits[i] is either 0 or 1.
Thought:
走两步 or 走一步 ?
AC
/*
* @lc app=leetcode.cn id=717 lang=cpp
*
* [717] 1 比特与 2 比特字符
*/
// @lc code=start
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
const int N = bits.size();
int pos = 0;
while (pos < N - 1) {
pos += bits[pos] == 1 ? 2 : 1;
}
return pos == N - 1;
}
};
// @lc code=end