題目
難度:★★☆☆☆
類型:數(shù)組
有兩種特殊字符。第一種字符可以用一比特0來表示。第二種字符可以用兩比特(10 或 11)來表示。
現(xiàn)給一個由若干比特組成的字符串。問最后一個字符是否必定為一個一比特字符。給定的字符串總是由0結(jié)束。
注意
1 <= len(bits) <= 1000.
bits[i] 總是0 或 1.
示例
示例 1
輸入:
bits = [1, 0, 0]
輸出: True
解釋:
唯一的編碼方式是一個兩比特字符和一個一比特字符。所以最后一個字符是一比特字符。
示例 2
輸入:
bits = [1, 1, 1, 0]
輸出: False
解釋:
唯一的編碼方式是兩比特字符和兩比特字符。所以最后一個字符不是一比特字符。
解答
這道題需要理解。
如果數(shù)組中有1,則1與其后的數(shù)字必須由第二種比特來表示,對于數(shù)組中的零,可以由第一種比特來表示。
class Solution:
def isOneBitCharacter(self, bits):
p = 0
while p < len(bits) - 2: # 一旦指針跳到最后兩個元素上,則退出循環(huán)
if bits[p] == 0:
p += 1 # 遇到0進1個位置
else:
p += 2 # 遇到1進2個位置
return bits[p] == 0
如有疑問或建議,歡迎評論區(qū)留言~