• Add Binary


    题目

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

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

    方法

    从后往前。每一个字符进行推断。
        public String addBinary(String a, String b) {
            if (a == null || b == null) {
                return null;
            }
            
            if (a.equals("")) {
                return b;
            }
            if (b.equals("")) {
                return a;
            }
            
            int lenA = a.length();
            int lenB = b.length();
            int i = lenA - 1;
            int j = lenB - 1;
            boolean flag = false;
            StringBuilder builder = new StringBuilder();
            while (i >= 0 && j >= 0) {
                char curA = a.charAt(i);
                char curB = b.charAt(j);
                if (flag) {
                    if (curA == '0' && curB == '0') {
                        builder.append(1);
                        flag = false;
                    }
                    if (curA == '0' && curB == '1') {
                        builder.append(0);
                        flag = true;
                    }
                    if (curA == '1' && curB == '0') {
                        builder.append(0);
                        flag = true;
                    }
                    if (curA == '1' && curB == '1') {
                        builder.append(1);
                        flag = true;
                    }
                } else {
                    if (curA == '0' && curB == '0') {
                        builder.append(0);
                        flag = false;
                    }
                    if (curA == '0' && curB == '1') {
                        builder.append(1);
                        flag = false;
                    }
                    if (curA == '1' && curB == '0') {
                        builder.append(1);
                        flag = false;
                    }
                    if (curA == '1' && curB == '1') {
                        builder.append(0);
                        flag = true;
                    }               
                }
                i--;
                j--;
            }
            while (i >= 0) {
                char curA  = a.charAt(i);
                if (flag) {
                    if (curA == '0') {
                        builder.append(1);
                        flag = false;
                    } else {
                        builder.append(0);
                        flag = true;
                    }
                } else {
                    builder.append(curA);
                }
                i--;
            }
            while (j >= 0) {
                char curB  = b.charAt(j);
                if (flag) {
                    if (curB == '0') {
                        builder.append(1);
                        flag = false;
                    } else {
                        builder.append(0);
                        flag = true;
                    }
                } else {
                    builder.append(curB);
                }
                j--;
            }
            if (flag) {
                builder.append(1);
            }
            return builder.reverse().toString();
        }

  • 相关阅读:
    STM32Cube Uart_DMA测试工程
    STM32CubeMX安装指南
    基于STM32Cube的ADC模数采样设计
    C++ this指针的用法
    用七段数码管显示26个字母的方案
    FPGA的引脚VCCINT 、VCCIO VCCA
    Keil环境中建立带FreeRTOS的STM32L项目
    STM32L时钟
    Mysql explain
    nginx屏蔽IP
  • 原文地址:https://www.cnblogs.com/llguanli/p/6762386.html
Copyright © 2020-2023  润新知