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还是1.
然后看倒数第二位,如果是0那么肯定是,
如果是1的话,那么倒数第三位必需是1,并且连续的1必需是偶数。
- class Solution {
- public:
- bool isOneBitCharacter(vector<int>& bits) {
- if(bits.size()==0) return false;
- if(bits.size()==1) {if(bits[0]!=0) return false;else return true;}
- int n =bits.size();
- int count_1=0;
- if(bits[n-1] != 0) return false;
- else{
- if(bits[n-2]==0) return true;
- else if(bits[n-2]!=0){
- for(int i=n-2;i>=0;i--){
- if(bits[i]!=0) count_1++;
- else break;
- }
- }
- }
- if(count_1%2==0) return true;
- else return false;
- }
- };