717. 1比特与2比特字符

题目

有两种特殊字符:

  • 第一种字符可以用一比特 0 表示
  • 第二种字符可以用两比特(1011)表示

给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true

示例1:

1
2
3
4
输入: bits = [1, 0, 0]
输出: true
解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。
所以最后一个字符是一比特字符。

示例2:

1
2
3
4
输入:bits = [1,1,1,0]
输出:false
解释:唯一的解码方式是将其解析为两比特字符和两比特字符。
所以最后一个字符不是一比特字符。

提示:

  • 1 <= len(bits) <= 1000.
  • bits[i] 总是01.

解法

解法一:

如果出现1了,那么其后面的数字肯定是跟着1的,那么只要略过这个数字即可。
具体思路可参考:https://blog.csdn.net/qq_16151925/article/details/80204862

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public boolean isOneBitCharacter(int[] bits) {
int index = 0;
while (index < bits.length - 1) {
if (bits[index] == 0) {
index++;
} else {
index += 2;
}
}

return index == bits.length - 1;
}
}
0%