• 1比特与2比特字符


    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14286560.html

    1比特与2比特字符

    题目链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters/

    题目

    有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。

    现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。

    示例 1:

    输入:
    bits = [1, 0, 0]
    输出: True
    解释:
    唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
    示例 2:

    输入:
    bits = [1, 1, 1, 0]
    输出: False
    解释:
    唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。

    题解

    此题的字符只有两种,第一种是一个字符只含有一个比特,第二种是一个字符含有两个比特,而且这两个比特只能由10或者11表示。所以这题先判断给定的数组的长度是奇数还是偶数,只有是奇数,并且前面的字符都是满足10或者11组合的数组,才能输出true。

    代码

    错误代码

    class Solution {
        public boolean isOneBitCharacter(int[] bits) {
            if(bits.length%2==0)
            {
                return false;
            }
            else{
                for(int i=0;i<bits.length-1;i=i+2)
                {
                    if(bits[i]!=1)
                        return false;
                }
            }
            return true;
        }
    }

     我好像理解错题意了,这好像不需要只是最后是一个比特,可以都是一个比特组成,问题出在,如果前面有1的话,只能由两个比特组成,如果前面是0,可以由但是0组成。

    正确代码

    思路

    先判断最后一位是否为1,如果是1,则返回false,然后从头开始遍历数组,如果遇到数组元素等于1,则接着遍历后两个元素,如果元素等于0,则遍历后一个元素,直到遍历到数组的最后,如果i的值等于数组长度减一,则说明数组最后一次遍历的是0,返回true,如果i的值不能与数组减一,则说明数组最后一次遍历的是1,则返回false.

    class Solution {
        public boolean isOneBitCharacter(int[] bits) {
            if(bits[bits.length-1]==1)
            {
                return false;
            }
           int i=0;
            for(i=0;i<bits.length-1;)
            {
                    if(bits[i]==1)
                       i=i+2;
                    else 
                        i++;
            }
            if(i!=bits.length-1)
              return false;
            return true;
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    修改Linux中的用户名
    阿里云服务器安全设置
    【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml
    【solr专题之四】关于VelocityResponseWriter
    django概述
    从烙铁手到IT男
    docker安装
    redhat之数据挖掘R语言软件及rstudio-server服务的安装
    分享一下 aix安装python提示C编译器问题的办法
    Android 播放Gif 动画
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14286560.html
Copyright © 2020-2023  润新知