【LeetCode-每日一题】-67. 二进制求和

简介: 【LeetCode-每日一题】-67. 二进制求和

1. 题目描述

2. 题目分析

  1. 简单的模拟,利用二进制进行模拟的加减。
  2. 两个字符串从后往前遍历,分别相加(sum)
  3. 若 sum == 0 则当前添加的为0
  4. 若 sum == 1 则当前添加的为1
  5. 若 sum == 2 则当前添加的为0且将sum的值 / 2(也就是当再次回来的时候,需要从1开始加)

3. 题目代码

class Solution {
  public static String addBinary(String a, String b) {
    int sum = 0;
    StringBuilder ans = new StringBuilder();
    int n = Math.max(a.length(), b.length());
    for (int i = 0; i < n; i++) {
      if (i < a.length()) {
        sum += (a.charAt(a.length() - 1 - i) - '0'); // 转换成整数
      }
      if (i < b.length()) {
        sum += (b.charAt(b.length() - 1 - i) - '0');
      }
      ans.append(sum % 2);
      sum = sum / 2;
    }
    System.out.println(ans.toString());
    if (sum > 0) {
      ans.append('1');
    }
    ans.reverse();
    return ans.toString();
  }
}


相关文章
|
7月前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
53 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
4月前
|
算法 Java
LeetCode第67题二进制求和
这篇文章是关于LeetCode第67题二进制求和的解题思路和代码实现的分享。作者通过分析题目要求和二进制加法的规则,提供了一个Java语言的解决方案,并在最后总结了二进制在算法中的重要性。
LeetCode第67题二进制求和
|
6月前
|
存储 SQL 算法
LeetCode题目67:二进制求和
LeetCode题目67:二进制求和
|
6月前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
88 2
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
|
7月前
【力扣】67. 二进制求和
【力扣】67. 二进制求和
|
7月前
LeetCode[题解] 2864. 最大二进制奇数
LeetCode[题解] 2864. 最大二进制奇数
38 0
|
7月前
leetcode:190. 颠倒二进制位
leetcode:190. 颠倒二进制位
34 0
|
7月前
leetcode-1784:检查二进制字符串字段
leetcode-1784:检查二进制字符串字段
36 0
|
7月前
leetcode-67:二进制求和
leetcode-67:二进制求和
45 0