class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
int length=bits.size();
int n=0;
int flag=0;
while(n<length-1){
if(bits[n]==0){
flag=0;
}
else{
if(flag==0)
flag=1;
else
flag=0;
}
n++;
}
if(flag==0 && bits[length-1]==0)
return true;
else
return false;
}
};
别人巧妙解:
也可以用条件判断赋值语句 pos += bits[pos] == 1 ? 2 : 1;
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
int length=bits.size();
int i=0;
if(bits[length-1]==1)
return false;
while(i<length-1){
i=i+bits[i]+1;
//这个idea,是通过考虑滑窗想出来,当开头为0,滑到下一位,若开头为1,则不论下一位是什么,往后移2位
}
return i==length-1;
//但是这个计数很妙,利用了位移,正确情况则会刚好到达length-1,
//如果有多余的1未匹配上,就会跳到末尾再后一位(认为末位和这个1匹配),而末位应该是1比特,所以一定错
}
};