LeetCode 717. 1位元與2位元字元(C、C++、python)
阿新 • • 發佈:2018-11-21
有兩種特殊字元。第一種字元可以用一位元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
.
C
bool isOneBitCharacter(int* bits, int bitsSize) { int n=bitsSize; int tmp=0; for(int i=0;i<n-1;i++) { if(1==bits[i]) { if(1==tmp) { tmp=0; } else { tmp=1; } } else { if(1==tmp) { tmp=0; } } } return 0==tmp; }
C++
class Solution { public: bool isOneBitCharacter(vector<int>& bits) { int n=bits.size(); stack<int> tmp; for(int i=0;i<n-1;i++) { if(1==bits[i]) { if(tmp.empty()) { tmp.push(1); } else { tmp.pop(); } } else { if(!tmp.empty()) { tmp.pop(); } } } return true==tmp.empty(); } };
python
class Solution:
def isOneBitCharacter(self, bits):
"""
:type bits: List[int]
:rtype: bool
"""
n=len(bits)
tmp=0
for i in range(0,n-1):
if 1==bits[i]:
if 0==tmp:
tmp=1
else:
tmp=0
else:
if 1==tmp:
tmp=0
return 0==tmp