LeetCode二进制求和Swift

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 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
    }
}
原文地址:https://www.cnblogs.com/huangzs/p/14097903.html