解题思路:
普通模拟,正序遍历,两比特字符必是1开头,一比特字符必是0开头。若只剩一位就停止遍历,此时最后一位必是0。
代码:
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
int i;
for(i = 0; i < bits.size()-1; )
{
if(bits[i] == 1) i += 2; //两比特字符进两位
else i++; //一比特字符进一位
}
if(i == bits.size()-1) return true; //最后剩余单独一位
else return false;
}
};
时间复杂度O(n),空间复杂度O(1)。