【LeetCode】67. 二进制求和

67. 二进制求和

难度:简单

题目

给你两个二进制字符串 ab ,以二进制字符串的形式返回它们的和。

示例 1:

复制代码
输入:a = "11", b = "1"
输出:"100"

示例 2:

复制代码
输入:a = "1010", b = "1011"
输出:"10101"

提示:

  • 1 <= a.length, b.length <= 10^4
  • ab 仅由字符 '0''1' 组成
  • 字符串如果不是 "0" ,就不含前导零

个人题解

思路:

  1. 从后往前遍历字符逐个判断即可
  2. 最后考虑是否进位
  3. sum & 1 等价于 sum % 2
java 复制代码
class Solution {
    public String addBinary(String a, String b) {
        StringBuilder ans = new StringBuilder();
        int ca = 0;
        for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0; i--, j--) {
            int sum = ca;
            sum += i>= 0 ? a.charAt(i) - '0' : 0;
            sum += j>= 0 ? b.charAt(j) - '0' : 0;
            ca = sum / 2;
            ans.append(sum & 1);
        }
        if (ca == 1) {
            ans.append(1);
        }
        return ans.reverse().toString();
    }
}
相关推荐
RTC老炮1 小时前
webrtc降噪-PriorSignalModelEstimator类源码分析与算法原理
算法·webrtc
草莓火锅3 小时前
用c++使输入的数字各个位上数字反转得到一个新数
开发语言·c++·算法
散峰而望4 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
Kuo-Teng4 小时前
LeetCode 160: Intersection of Two Linked Lists
java·算法·leetcode·职场和发展
fie88894 小时前
基于MATLAB的狼群算法实现
开发语言·算法·matlab
偷偷的卷4 小时前
【算法笔记 11】贪心策略六
笔记·算法
ZPC82105 小时前
FPGA 部署ONNX
人工智能·python·算法·机器人
_w_z_j_5 小时前
爱丽丝的人偶
算法
老前端的功夫6 小时前
Vue2中key的深度解析:Diff算法的性能优化之道
前端·javascript·vue.js·算法·性能优化
yongui478347 小时前
基于深度随机森林(Deep Forest)的分类算法实现
算法·随机森林·分类