zoukankan      html  css  js  c++  java
  • leetcode-67-二进制求和

    问题:

    package com.example.demo;
    
    public class Test67 {
    
        /**
         * 二进制求和
         * 思路:
         * 1、先获取两个二进制字符串的长度,用于补齐为等长字符串,便于两两相加
         * 2、定义一个overFlow来表名两两相加是否已经满足进1
         * 3、定义循环,总字符串的最后开始计算(也就是低位开始计算)
         * 4、将overFlow+ a1 + b1 - 0   --->这个值代表运算出的结果
         * 5、将运算出的结果和‘1‘ 和 ’3‘ 比较(因为二进制相加只有四种情况,这两种情况是需要进位的)
         * '0' + '0'  -->  '0'
         * '1' + '0'  -->  '1'
         * '1' + '1'  -->  '2'
         * '1' + '1' + overFlow  -->  '3'
         * 6、使用stringbuffer保存每一次运算后的结果
         * 7、循环完成之后,需要判断最后一次运算是否满足进位,满足的话,需要单独处理
         * 8、最后reverse翻转字符串即为结果
         */
        public String addBinary(String a, String b) {
            StringBuffer sb = new StringBuffer();
            int len1 = a.length();
            int len2 = b.length();
    
            // 向将两个字符串补齐
            while (len1 < len2) {
                a = '0' + a;
                len1++;
            }
    
            while (len2 < len1) {
                b = '0' + b;
                len2++;
            }
    
    
            int overFlow = 0;
            int index = a.length() - 1;
            // 从低位两两相加,并计算最终的二进制值,append到stringbuffer中
            while (index >= 0) {
                char c = a.charAt(index);
                char c1 = b.charAt(index);
                int sum = c + c1 - '0' + overFlow;
                if (sum >= '2') {
                    overFlow = 1;
                } else {
                    overFlow = 0;
                }
                sb.append((sum == '1' || sum == '3') ? '1' : '0');
                index--;
            }
            // 循环完成之后,需要判断最后一次运算是否满足进位,满足的话,需要单独处理
            if (overFlow == 1) {
                sb.append('1');
            }
            return sb.reverse().toString();
        }
    
        public static void main(String[] args) {
    
            Test67 t = new Test67();
            String s = t.addBinary("11", "");
            System.out.println(s);
        }
    }
  • 相关阅读:
    Linux中无法使用ifconfig命令
    Linux中运行程序的一些方法介绍
    python中一些函数的使用介绍
    pytorch中DataSet和DataLoader的使用详解
    gensim中有关word2vec的一些使用
    pytorch中比较两个tensor是否相等
    pytorch中的数据类型之间的转换
    pytorch中有关gpu的操作
    pytorch中保存模型
    Vscode配合远程服务器进行python项目开发
  • 原文地址:https://www.cnblogs.com/nxzblogs/p/11347537.html
Copyright © 2011-2022 走看看