zoukankan      html  css  js  c++  java
  • leetCode-1-bit and 2-bit Characters

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

    My Solution:

    class Solution {
        public boolean isOneBitCharacter(int[] bits) {
            int len = bits.length;
            for(int i = 0;i < len;i++){
                if(i == len - 2){
                    if(bits[i] == 1){
                        return false;
                    }
                    if(bits[i] == 0){
                        return true;
                    }
                }
                if(bits[i] == 1){
                       String temp = bits[i] + "" + bits[i+1];
                       if(temp.equals("10") || temp.equals("11")){
                            i++;
                        }
                }
            }
            return true;
        }
    }

    Another Better Solution:

    class Solution {
        public boolean isOneBitCharacter(int[] bits) {
             int i = 0;
             while (i < bits.length - 1) {
                i += bits[i] + 1;
             }
             return i == bits.length - 1;
        }
    }

    总结:我们注意到’0’和’10’,’11’是”互斥的”,即没有’01’这个干扰,所有当前位为’0’,则跳过一位,当前位为’1’,则跳过两位,最后通过i判断,如果i=bits.length-1,说明最后位为0,那么返回true,如果i=bits.length,说明最后可以返回二位的的字符,即为false

  • 相关阅读:
    3.2.1 正則表達式的语法(1)
    朴素贝叶斯(naive bayes)
    有方向的运动js
    碰撞检測之OBB-OBB的SweepTest
    左右上下都能滚动的效果
    C语言中 fputs() fgets() 的使用方法
    Apache Module mod_ssl
    "ssllabs" website and "testssl" website
    Google发布SSLv3漏洞简要分析报告
    为什么要使用TLSv1.2和System SSL?
  • 原文地址:https://www.cnblogs.com/kevincong/p/7875288.html
Copyright © 2011-2022 走看看