本文次要记录一下leetcode之二进制求和

题目

给你两个二进制字符串,返回它们的和(用二进制示意)。输出为 非空 字符串且只蕴含数字 1 和 0。 示例 1:输出: a = "11", b = "1"输入: "100"示例 2:输出: a = "1010", b = "1011"输入: "10101" 提醒:每个字符串仅由字符 '0' 或 '1' 组成。1 <= a.length, b.length <= 10^4字符串如果不是 "0" ,就都不含前导零。起源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-binary著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

题解

class Solution {    public String addBinary(String a, String b) {        StringBuilder builder = new StringBuilder();        int i = a.length() - 1;        int j = b.length() - 1;                int sum = 0;        while(i >= 0 || j >= 0) {            if(i >= 0) {                sum += a.charAt(i) - '0';                i--;            }            if(j >= 0) {                sum += b.charAt(j) - '0';                j--;            }            builder.append(sum % 2);            sum = sum/2;        }                String result = builder.reverse().toString();        return sum > 0 ? '1' + result : result;    }}

小结

这里对两个字符串从后开始遍历,而后进行累加,对2取余数增加到后果集,而后对2取模,持续循环,最初将后果反转一下,最初再判断一下sum是否大于0,大于0的话,再补下前缀1。

doc

  • 二进制求和