前言说明
算法学习,日常刷题记录。
题目连接
题目内容
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为非空字符串且只包含数字1和0。
示例1:
输入: a = “11”, b = “1”
输出: “100”
示例2:
输入: a = “1010”, b = “1011”
输出: “10101”
提示:
每个字符串仅由字符’0’或’1’组成
1 <= a.length, b.length <= 10^4
字符串如果不是 “0” ,就都不含前导零
分析过程
如果先转两个字符串为十进制,进行相加,再转回二进制,这是不行的,因为在计算过程中会溢出,字符串的长度可能很长,而多一个长度就会指数级增长一个2的次方,在字符串转十进制时2的幂就已经溢出了。
这里的思路是,模拟竖式计算,从字符串的结尾遍历到字符串的开头,满2进1位。
第一步
定义字符串集合sb,用来保存二进制求和后的结果。
定义长度length,取字符串a和字符串b中较长的