zoukankan      html  css  js  c++  java
  • 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.

    Solution: Since two bits character always starts with '1', and the input stream is valid. So if it's not one bit, then it's two bits. Count from left to right, whenever we encounter a '1', skip the next character as it must be combined with the former '1'. If the last '1' is exactly in front the of the last character, then it's a two bits character. Otherwise, it's a one bit character.

    class Solution {
        public boolean isOneBitCharacter(int[] bits) {
            int n = bits.length, i = 0;
            while (i < n)  {
                if (bits[i] == 1) {
                    if (i == bits.length - 2) {
                        return false;
                    }
                    
                    i += 2;
                } else {
                    i++;
                }
            }
            
            return true;
        }
    }
  • 相关阅读:
    mapreduce的组件介绍
    [转]编译hadoop
    hadoop-2.7.2-HA安装笔记
    Maven常用命令
    Maven教程
    [转]Mahout推荐算法API详解
    [转]hadoop新手错误解决方法
    mysql命令
    [java笔记]JDK的安装和配置
    Nginx常见错误解决办法
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/9062370.html
Copyright © 2011-2022 走看看