1 比特与 2 比特字符
1 比特与 2 比特字符

class Solution {
public boolean isOneBitCharacter(int[] bits) {
int n = bits.length, i = 0;
while (i < n - 1) {
i += bits[i] + 1;
}
return i == n - 1;
}
}
注意
要符合题意规则:一比特是0,二比特是10或11
我们可以把遍历过程想象成在数组上“行走”:
- 规则:
- 如果站在
0上(bits[i] == 0),说明这是一个一比特字符,迈 1 步走到下一个位置。 - 如果站在
1上(bits[i] == 1),说明这是一个二比特字符的开头,需要迈 2 步,跳过它和下一个比特。
- 如果站在
- 表达式
i += bits[i] + 1完美实现了这个规则:- 当
bits[i] == 0时,i += 0 + 1→ 前进 1 步。 - 当
bits[i] == 1时,i += 1 + 1→ 前进 2 步。
- 当
- 循环条件
i < n - 1确保我们不会用最后一个元素(索引n-1)来决定步数。因为我们只关心最后一个字符本身是什么类型,而不是用它去“迈步”。
该题来自力扣:https://leetcode.cn/problems/1-bit-and-2-bit-characters/
浙公网安备 33010602011771号