• 可被5整除的二进制


    此博客链接:

    可被5整除的二进制

    题目链接:https://leetcode-cn.com/problems/binary-prefix-divisible-by-5/

    题目

    给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。

    返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。

    示例 1:

    输入:[0,1,1]
    输出:[true,false,false]
    解释:
    输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0] 为真。
    示例 2:

    输入:[1,1,1]
    输出:[false,false,false]
    示例 3:

    输入:[0,1,1,1,1,1]
    输出:[true,false,false,false,true,false]
    示例 4:

    输入:[1,1,1,0,1]
    输出:[false,false,false,false,false]

    题解

    前言:这题我没有看出来是简单题,可能因为我进制不会转换。

    思路:我认为第一步应该先把二进制能够取出来,怎样从数组中能按顺序取二进制数;

                          其次把二进制数转成十进制数;

                          最后判断转换后的十进制数是否能够被5整除。

    错误尝试

    我傻了,既然是字符串,转换成整数时,肯定会超出int的长度。

    class Solution {
        public List<Boolean> prefixesDivBy5(int[] A) {
            String str="";
            int ten=0;
           List<Boolean>result=new ArrayList();
            for(int i=0;i<A.length;i++)
            {
                str+=String.valueOf(A[i]);
                ten=Integer.parseInt(str,2);
                if(ten%5==0)
                    result.add(true);
                else
                    result.add(false);
            }
            return result;
        }
    }
    

      

    代码

    由于二进制转换成十进制会越界,那么不能利用java自带的二进制换是十进制的函数,这里利用二进制转十进制的公式,二进制数的每一位*2转换成响应的十进制,为了防止数字溢出,在每次转成十进制后都对5取余,而不是总后的结果对5取余,这里我不知道怎么证明,但是对于这种判断能不能整除的数,在每次求数时就对某个数取余和最后对某个数取余结果是一样的。

    class Solution {
        public List<Boolean> prefixesDivBy5(int[] A) {
           
            Integer ten=0;
           List<Boolean>result=new ArrayList();
            for(int i=0;i<A.length;i++)
            {
                ten=(ten*2+A[i])%5;
                if(ten==0)
                    result.add(true);
                else
                    result.add(false);
            }
            return result;
        }
    }

    结果

  • 相关阅读:
    uva 10918 Tri Tiling
    uva 10943 How do you add?
    uva 10518 How Many Calls?
    convert函数用法小结转载
    GridView 实现服务器端和客户端全选的两种方法
    vs2008和vs10以及Windows Phone自带的1000多个 Windows 系统使用的各种图标、光标和动画文件
    添加滚动条的几个样式未完待续
    asp.net页面绑定数据的方式未完待续
    读取数据库中空字段的处理方法如下
    遇到一段让我尴尬的代码,有增长了点见识。
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14278315.html
Copyright © 2020-2023  润新知