此题简单,最后一位是0,如果前一位是0,那就一定是true,考虑前一位是1的情况。从后往前遍历,直到遇到0或者到头。如果1的个数为偶数,那么就是true,如果为奇数就是false。因为0一定是组合的末尾,1又不能是单个的。所以偶数个1才能自己组合完,否则就会用到最后一位0.
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
if(bits.empty())
return false;
int len=bits.size();
if(len==1)
return true;
if(!bits[len-2])
return true;
int count=0;
for(int i=len-2;i>=0;i--)
{
int temp=bits[i];
if(temp)
count++;
else
break;
}
if(count%2==0)
return true;
else
return false;
}
};