• 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

  • 相关阅读:
    str.format格式化用法(通过{}来替代%)
    urlparse模块(专门用来解析URL格式)
    Socket原理与编程基础
    如何查询端口号和网址的ip地址?
    urlretrieve 如何给文件下载设置下载进度?
    判断URL是否支持断点续传?
    断点续传
    HTTP协议详解之User Agent篇
    HTTP协议详解之基本认证篇
    HTTP协议详解之请求篇
  • 原文地址:https://www.cnblogs.com/kevincong/p/7875288.html
Copyright © 2020-2023  润新知