leetcode 717. 1位元與2位元字元(python)
阿新 • • 發佈:2018-11-07
有兩種特殊字元。第一種字元可以用一位元0
來表示。第二種字元可以用兩位元(10
或 11
)來表示。
現給一個由若干位元組成的字串。問最後一個字元是否必定為一個一位元字元。給定的字串總是由0結束。
示例 1:
輸入:
bits = [1, 0, 0]
輸出: True
解釋:
唯一的編碼方式是一個兩位元字元和一個一位元字元。所以最後一個字元是一位元字元。
示例 2:
輸入:
bits = [1, 1, 1, 0]
輸出: False
解釋:
唯一的編碼方式是兩位元字元和兩位元字元。所以最後一個字元不是一位元字元。
注意:
1 <= len(bits) <= 1000
bits[i]
總是0
或1
.
思路:
這題應該反向推導,
1)倒數第一位是0;
2)倒數第二位如果是0 不用管其他的,肯定為"True",如果是1需要看第三位;
3)倒數第三位如果是0肯定為False,如果是1待定,繼續往下分析
。。。。
找出規律之後就是如何實現了,簡單來說就是我需要確定倒數第二個0的反向索引下標。如果是偶數數肯定為False,如果是奇數,答案為True
class Solution(object): def isOneBitCharacter(self, bits): """ :type bits: List[int] :rtype: bool """ bits_reverse = bits[::-1] bits_reverse.append(0) id1 = [i for i,x in enumerate(bits_reverse) if x==0] if id1[1] % 2 == 0: return False else: return True