leetcode -- 67. Add Binary【统一形式简化代码+双指针 + 二进制规则 + 字符数字转换】

来源:互联网 发布:软件测试的原理 编辑:程序博客网 时间:2024/06/04 19:16

题目

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

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


题意:


给定两个二进制字符串,然后返回他们的和(也为字符串形式)。


分析及解答

  • 统一形式】非常重要的技巧,经过这种统一处理,使得代码处理更简洁。
  • 双指针(两个指针分别指向两个字符串)
  • 字符,数字转换

public class Solution {public String addBinary(String a, String b) {        char[] A = a.toCharArray();        char[] B = b.toCharArray();        StringBuilder sb =  new StringBuilder();        int highA = a.length() -1;        int highB = b.length() -1;                int pre = 0;        int numberA = 0;        int numberB = 0;        int bitResult = 0;    //关键代码: 统一形式处理。        while(highA >= 0 || highB >= 0 || pre >0){        numberA = highA >=0 ? (A[highA] - '0'):0; //统一形式        numberB = highB >= 0 ? (B[highB] - '0'):0;        highA --;        highB --;                bitResult = numberA + numberB + pre;        if(bitResult == 0){        sb.append('0');        pre = 0;        }else if(bitResult == 1){               sb.append('1');        pre = 0;             }else if(bitResult == 2){        sb.append('0');        pre = 1;        }else{        sb.append('1');        pre = 1;        }        }        return sb.reverse().toString();    }}


原创粉丝点击