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();
        }

  • 相关阅读:
    bzoj1904: Musical Water-fence
    bzoj3822: 文学
    bzoj1513: [POI2006]Tet-Tetris 3D
    bzoj4130: [PA2011]Kangaroos
    bzoj2515 Room
    bzoj2518: [Shoi2010]滚动的正四面体
    bzoj4617: [Wf2016]Spin Doctor
    bzoj3086: Coci2009 dvapravca
    bzoj3745: [Coci2015]Norma
    bzoj1837: [CROATIAN2009]cavli 凸包1
  • 原文地址:https://www.cnblogs.com/llguanli/p/6762386.html
Copyright © 2011-2022 走看看