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".

    方法

    从后往前。每一个字符进行推断。
        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();
        }

  • 相关阅读:
    树梅派学习之——nano编辑器
    树梅派学习之——输入法安装
    Qt的正则表达式类(QRegExp)
    虚拟机VMware上网配置
    Qt Android环境搭建
    qt5.8.0之静态编译
    qt编译之CONFIG += console
    面向对象的3个特性:封装、继承、多态
    Python笔记:df.loc[]和df.iloc[]的区别
    Python报错ValueError: arrays must all be same length
  • 原文地址:https://www.cnblogs.com/llguanli/p/6762386.html
Copyright © 2011-2022 走看看