717. 1-bit and 2-bit Characters

 

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 always 0 or 1.

 

思路:

1,判断数组长度是不是为1或者0,如果是可以直接判断编码是否正确

2,长度大于2时,

      判断当前是不是最后一个数,若不是:

              判断是不是第一个数,若是第一个数,且为0,则跳过(0可以单独作为一个编码)

               如果不是第一个数,则判断是不是1,若是1,则i++,因为1需要与后一个数结合

                最终,若是1与最后一个数结合了,则编码错误,否则最后还余一个数,则判断最后一个数是不是0,是则正确

 

 

 

 

 

 

 

 

#pragma once
#include <iostream>
#include<vector>

using namespace std;

class Solution {
public:
	bool isOneBitCharacter(vector<int>& bits) {
		int leng=bits.size();
        //数组含有2个元素以下时
		if (leng == 0 || (leng == 1 && bits[0] == 0))
		{
			return true;
		}
		else if (leng == 1 && bits[0] != 0)
		{
			return false;
		}

		//两个及以上
		for (int i = 0; i < leng; i++)
		{
            //判断当前元素是不是倒数最后一个,并且是不是0,是则为true
			if (i == leng - 1 && bits[i] == 0)
			{
				return true;
			}
			
			//第一数是0,则为单独的一个数
			if (i == 0 && bits[i] == 0)
			{
				continue;
			}
            //如果有一个值为1,则后面必跟一个数
			else if (bits[i] == 1)
			{
				i++;
				continue;
			}
	
			
		}
		return false;
	}
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值