我是靠谱客的博主 善良冷风,最近开发中收集的这篇文章主要介绍LeetCode 剑指 Offer II 002. 二进制加法题目描述一、解题关键词二、解题报告总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LeetCode 剑指 Offer II 002. 二进制加法

文章目录

  • 题目描述
  • 一、解题关键词
  • 二、解题报告
    • 1.思路分析
    • 2.时间复杂度
    • 3.代码示例
    • 2.知识点
  • 总结

题目描述

给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "10"
输出: "101"

LeetCode 剑指 Offer II 002. 二进制加法
提示:


一、解题关键词


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

二、解题报告

1.思路分析

2.时间复杂度

3.代码示例

class Solution {
public String addBinary(String a, String b) {
StringBuilder res = new StringBuilder(); // 返回结果
int i = a.length() - 1; // 标记遍历到 a 的位置
int j = b.length() - 1; // 标记遍历到 b 的位置
int carry = 0; // 进位
while (i >= 0 || j >= 0 || carry != 0) { // a 没遍历完,或 b 没遍历完,或进位不为 0
int digitA = i >= 0 ? a.charAt(i) - '0' : 0; // 当前 a 的取值
int digitB = j >= 0 ? b.charAt(j) - '0' : 0; // 当前 b 的取值
int sum = digitA + digitB + carry; // 当前位置相加的结果
carry = sum >= 2 ? 1 : 0; // 是否有进位
sum = sum >= 2 ? sum - 2 : sum; // 去除进位后留下的数字
res.append(sum); // 把去除进位后留下的数字拼接到结果中
i --;
// 遍历到 a 的位置向左移动
j --;
// 遍历到 b 的位置向左移动
}
return res.reverse().toString(); // 把结果反转并返回
}
}

2.知识点



总结

最后

以上就是善良冷风为你收集整理的LeetCode 剑指 Offer II 002. 二进制加法题目描述一、解题关键词二、解题报告总结的全部内容,希望文章能够帮你解决LeetCode 剑指 Offer II 002. 二进制加法题目描述一、解题关键词二、解题报告总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(104)

评论列表共有 0 条评论

立即
投稿
返回
顶部