我是靠谱客的博主 自觉冷风,这篇文章主要介绍剑指 Offer II 002. 二进制加法,现在分享给大家,希望可以做个参考。

给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。

输入为 非空 字符串且只包含数字 1 和 0。

示例 1:

输入: a = “11”, b = “10”
输出: “101”
示例 2:

输入: a = “1010”, b = “1011”
输出: “10101”

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/JFETK5
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

比较简单的一道字符串题目,其实相当于十进制的大整数加法了,从后往前遍历,记录进位和余数,放在 StringBuilder 里面,然后翻转,再 toString() 即可,重点是使用字符串,而不是转化成数字。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution { public String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int t = 0; int i = a.length() - 1; int j = b.length() - 1; while (i >= 0 || j >= 0) { int x = i >= 0 ? a.charAt(i--) - '0' : 0; int y = j >= 0 ? b.charAt(j--) - '0' : 0; int sum = x + y + t; t = sum / 2; sb.append(sum % 2); } if (t == 1) { sb.append(1); } return sb.reverse().toString(); } }

最后

以上就是自觉冷风最近收集整理的关于剑指 Offer II 002. 二进制加法的全部内容,更多相关剑指内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部