有两种特殊字符:
- 第一种字符可以用一比特
0
表示 - 第二种字符可以用两比特(
10
或11
)表示
给你一个以 0
结尾的二进制数组 bits
,如果最后一个字符必须是一个一比特字符,则返回 true
链接:
717. 1 比特与 2 比特字符 - 力扣(LeetCode)
解法一:
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
int n = bits.size();
for (int i = 0; i < n - 1; ++i) {
if (bits[i] == 1) {
// 遇到1,需要跳过接下来的一个比特
i++;
// 如果已经到达数组末尾,说明没有足够的比特来表示一个双比特字符
if (i == n - 1) {
return false;
}
}
}
// 遍历完整个数组(除了最后一个0),且没有遇到错误,返回true
return true;
}
};
核心思想就是不考虑其他,从首项开始,遇到一就跳一个(认为是第二种字符),最后看数组是否可以匹配长度。