Description:
We have two special characters. The first character can be represented by one bit 0
. The second character can be represented by two bits ( 10
or 11
).
Now given a string represented by several bits. Return whether the last character must be a one-bit character or not. The given string will always end with a zero.
Example 1:
Input:
bits = [1, 0, 0]
Output: True
Explanation:
The only way to decode it is two-bit character and one-bit character. So the last character is one-bit character.
Example 2:
Input:
bits = [1, 1, 1, 0]
Output: False
Explanation:
The only way to decode it is two-bit character and two-bit character. So the last character is NOT one-bit character.
Note:
1 <= len(bits) <= 1000
.bits[i]
is always0
or1
.
思路:本题意思是有两种字符,一种是 0,一种是 10 或者 11,现在要判断整个数组是否由这两种组成的,要求最后一位的数字必须是单个的 0。比较简单,直接扫描数组,如果元素值为 0 则前进一步,为 1 则前进两步,最后判断当前位置是否是倒数第二的位置。
C++ 代码
class Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
int n = bits.size(), i = 0;
while (i < n - 1) {
if (bits[i] == 0)
++i;
else
i+= 2;
}
return i == n - 1;
}
};
运行时间:4ms
运行内存:8.7M
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于