diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/README.md" index 2ba8943f6c7e1..ef78bf34c96b0 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/README.md" @@ -181,6 +181,35 @@ public class Solution { } ``` +#### Swift + +```swift +class Solution { + func addBinary(_ a: String, _ b: String) -> String { + var result = "" + var carry = 0 + var i = a.count - 1, j = b.count - 1 + + let aChars = Array(a) + let bChars = Array(b) + + while i >= 0 || j >= 0 || carry > 0 { + let digitA = i >= 0 ? Int(String(aChars[i]))! : 0 + let digitB = j >= 0 ? Int(String(bChars[j]))! : 0 + + carry += digitA + digitB + result = "\(carry % 2)" + result + carry /= 2 + + i -= 1 + j -= 1 + } + + return result + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/Solution.swift" new file mode 100644 index 0000000000000..28a3b741d9412 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225/Solution.swift" @@ -0,0 +1,24 @@ +class Solution { + func addBinary(_ a: String, _ b: String) -> String { + var result = "" + var carry = 0 + var i = a.count - 1, j = b.count - 1 + + let aChars = Array(a) + let bChars = Array(b) + + while i >= 0 || j >= 0 || carry > 0 { + let digitA = i >= 0 ? Int(String(aChars[i]))! : 0 + let digitB = j >= 0 ? Int(String(bChars[j]))! : 0 + + carry += digitA + digitB + result = "\(carry % 2)" + result + carry /= 2 + + i -= 1 + j -= 1 + } + + return result + } +}