- 描述: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.
- 分析:题目给定了三个特殊字符的替代形式,分别为”0”,”10”和”11”。要求根据所给的数组中的元素判断这个数组中的最后一个字符是不是one-bit字符,如果是,则返回ture,否则返回false。
- 思路一:从头开始逐个判断,如果这个使用两位替代,则这个这个替代一定要使用1开头,这时执行i+2否则执行i+1,直到数组结尾。
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
bool flag = false;
for (int i = 0; i < bits.size();) {
if (bits[i] == 0) {
i = i + 1;
flag = true;
} else {
i = i + 2;
flag = false;
}
}
return flag;
}
};