leetcode刷题937-1(1-bit and 2-bit)
感想:第一次刷题有点蒙,对操作不熟悉
选择了比较熟悉的C语言进行编写,以后还会尝试其他语言
英文题目给很难读懂,努力克服!
题目解析:
题目要求判断最后一个输出是不是1比特的字符
判断依据是 最后一个输出是单独的 0,则为true
若是最后一个0是被双字节连带输出,如10,则为false
做题逻辑:
按数组顺序读取:
对于双字节的判断标准是:若读取到1,则可以进行跳跃,即跳过1的下一个字符;接着往下读取,若读取到0,则正常往下读取;若一直读取到了i=bitsSize,则意味着最后是以双字节输出的,则输出false(因为题目规定输入数组最后以0结束,就不需要考虑结尾为1的情况)
否则,输出true
考查方向:数组
错误:
想过用直接对最后的几个元素进行判断,后来发现这样行不通,因为后面的关系是建立再前面的基础之上的,不能单独的分出来做判断。
c代码:
bool isOneBitCharacter(int* bits, int bitsSize) {
int i=0;
while(i<bitsSize){
if(bits[i]==1){
i=i+2;
if(i==bitsSize)
return false;
}
else
i=i+1;
}
return true;
}