给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
提示:
每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。
思路:(加一题型进阶版 https://www.cnblogs.com/huangzs/p/14084324.html )
1.最大循环次数
2.字符串反转
3.标志位是否进1
4.最后首位插1
class Solution { func addBinary(_ a: String, _ b: String) -> String { let length = max(a.count, b.count) , aStr = String(a.reversed()) , bStr = String(b.reversed()) var flag = 0 , sum = 0 , result = "" for i in (0..<length) { let A:Character = a.count > i ? aStr[aStr.index(aStr.startIndex, offsetBy: i)] : "0" let B:Character = b.count > i ? bStr[bStr.index(bStr.startIndex, offsetBy: i)] : "0" sum = A.hexDigitValue! + B.hexDigitValue! + flag flag = sum / 2 result = String(sum % 2) + result } if flag == 1 { result = "1" + result } return result } }