zoukankan      html  css  js  c++  java
  • Add Binary

    Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

    起初尝试把2个二进制数转换成十进制在相加,得到和之后在转换为二进制,最后发现二进制数位数太长转换成十进制数会溢出。直接采用先对齐,然后每位相加的方法即可。

    public class Solution {
        
        public String addBinary(String a, String b) {
            String re = "";
            int size1 = a.length();
            int size2 = b.length();
            String longer = (a.length()>b.length())?a:b;
            String shorter = (b.length()<a.length())?b:a;
            int dis = Math.abs(size1-size2);
            //给短的补0以便和长的每位对齐
            for(int i=0;i<dis;i++){
                shorter = "0"+shorter;
            }
            int carry = 0;//进位逢二进一
            int size = longer.length();
            for(int j=size-1;j>=0;j--){
                int num1 = Integer.valueOf(longer.charAt(j)+"");
                int num2 = Integer.valueOf(shorter.charAt(j)+"");
                int sum = carry+num1+num2;//将每位以及低位的进位相加
                switch(sum){
                    case 0:
                        carry = 0;
                        re = "0"+re;
                        break;
                    case 1:
                        carry = 0;
                        re = "1"+re;
                        break;
                    case 2:
                        carry = 1;
                        re = "0"+re;
                        break;
                    case 3:
                        carry = 1;
                        re = "1"+re;
                        break;
                    default:break;
                }
            }
            //若进位为1表明最高位相加产生进位补1
            if(carry==1){
                re = "1"+re;
            }
            return re;
        }
    }
  • 相关阅读:
    webpack第一节(4)
    webpack第一节(3)
    webpack第一节(2)
    webpack第一节(1)
    node 下载 解压 重命名
    node 文件操作
    js判断设备(转)
    【CSS3】transform-origin以原点进行旋转 (转)
    手机(转)
    mysql最大连接数问题
  • 原文地址:https://www.cnblogs.com/mrpod2g/p/4272691.html
Copyright © 2011-2022 走看看