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

  • 相关阅读:
    如何在SQL/400中计算两日期间的天数
    委托、事件与Observer设计模式
    C# 杂项
    泛型学习(二)
    委托
    操作符重载 (operator)
    一个解决方案多个项目
    将方法绑定到委托
    事件
    密封方法 密封类(sealed)
  • 原文地址:https://www.cnblogs.com/kevincong/p/7875288.html
Copyright © 2011-2022 走看看