leetcode67.二进制求和

java 复制代码
public class Solution {
    public String addBinary(String a, String b) {
        StringBuilder result = new StringBuilder();
        int i = a.length() - 1;
        int j = b.length() - 1;
        int carry = 0;
        
        while (i >= 0 || j >= 0 || carry != 0) {
            int sum = carry;
            if (i >= 0) {
                sum += a.charAt(i--) - '0';  // 转换为数字
            }
            if (j >= 0) {
                sum += b.charAt(j--) - '0';  // 转换为数字
            }
            
            // 使用位运算计算当前位和进位
            result.append(sum & 1);        // 当前位
            carry = (sum >> 1) & 1;        // 进位
        }
        
        return result.reverse().toString();
    }
}    
相关推荐
Kt&Rs2 分钟前
11.12 LeetCode 题目汇总与解题思路
算法·leetcode
m0_5656111316 分钟前
Java Stream流操作全解析
java·开发语言·算法
大千AI助手23 分钟前
决策树悲观错误剪枝(PEP)详解:原理、实现与应用
人工智能·算法·决策树·机器学习·剪枝·大千ai助手·悲观错误剪枝
九年义务漏网鲨鱼42 分钟前
【机器学习算法】面试中的ROC和AUC
算法·机器学习·面试
草莓熊Lotso43 分钟前
《算法闯关指南:优选算法--位运算》--38.消失的两个数字
服务器·c++·算法·1024程序员节
剪一朵云爱着6 小时前
力扣81. 搜索旋转排序数组 II
算法·leetcode·职场和发展
报错小能手9 小时前
刷题日常 5 二叉树最大深度
算法
Greedy Alg9 小时前
LeetCode 84. 柱状图中最大的矩形(困难)
算法
im_AMBER10 小时前
Leetcode 52
笔记·学习·算法·leetcode