题目
难度:★★☆☆☆
类型:数组
有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。
现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。
注意
1 <= len(bits) <= 1000.
bits[i] 总是0 或 1.
示例
示例 1
输入:
bits = [1, 0, 0]
输出: True
解释:
唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
示例 2
输入:
bits = [1, 1, 1, 0]
输出: False
解释:
唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。
解答
这道题需要理解。
如果数组中有1,则1与其后的数字必须由第二种比特来表示,对于数组中的零,可以由第一种比特来表示。
class Solution:
def isOneBitCharacter(self, bits):
p = 0
while p < len(bits) - 2: # 一旦指针跳到最后两个元素上,则退出循环
if bits[p] == 0:
p += 1 # 遇到0进1个位置
else:
p += 2 # 遇到1进2个位置
return bits[p] == 0
如有疑问或建议,欢迎评论区留言~