题目描述
有两种特殊字符。第一种字符可以用一比特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.
好吧,这道题我一开始也是想的复杂了,哎,其实只要每次遇到1那么就加2,遇到0就加1,判断最后索引的位置,如果时length - 1,那么就返回true,如果是length,那么就返回false,因为此时末尾肯定是一对,就不满足条件
代码如下:
需要注意的是一开始的如果长度为1,需要单独讨论,比如就是0的话就是true
class Solution {
public boolean isOneBitCharacter(int[] bits) {
int len = bits.length;
int start = 0;
if(len == 1){
return true;
}
for (; start < bits.length - 1; ) {
int j = bits[start];
if(j == 0 ){
start ++;
}else {
start += 2;
}
if(start == bits.length - 1){
return true;
}
if(start == bits.length){
return false;
}
}
return false;
}
}
本文探讨了一种特殊的字符编码方式,其中第一种字符用一比特0表示,第二种字符用两比特(10或11)表示。通过分析比特串,判断最后一个字符是否必定为一比特字符。文章提供了实现这一判断的算法思路与代码示例。
586

被折叠的 条评论
为什么被折叠?



