有两种特殊字符。第一种字符可以用一比特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