-
[LeetCode / Kotlin] Add BinaryETC 2024. 7. 12. 01:14반응형
문제
Given two binary strings a and b, return their sum as a binary string.
Example 1:
Input: a = "11", b = "1" Output: "100"
Example 2:
Input: a = "1010", b = "1011" Output: "10101"
Constraints:
- 1 <= a.length, b.length <= 104
- a and b consist only of '0' or '1' characters.
- Each string does not contain leading zeros except for the zero itself.
나의 풀이
1. 자리수가 안맞는것을 포맷팅한다.
2. 뒤에서부터 비교하며 연산을 한다.
... 유틸을 잘 알았다면 아래처럼 1줄로 가능함.
더보기더보기class Solution {
fun addBinary(a: String, b: String): String {
return (a.toBigInteger(2) + b.toBigInteger(2)).toString(2)
}
}class Solution { fun addBinary(a: String, b: String): String { val ans = StringBuilder() val maxLength = maxOf(a.length, b.length) val formattedA = if (a.length != maxLength) { "0".repeat(maxLength - a.length) + a } else a val formattedB = if (b.length != maxLength) { "0".repeat(maxLength - b.length) + b } else b var flag = false for (i in 0 until maxLength) { val pa = formattedA.get(maxLength -1 - i) val pb = formattedB.get(maxLength -1 - i) val sum = pa.toString().toInt() + pb.toString().toInt() + (if (flag) 1 else 0) if (sum < 2) { flag = false ans.append(sum.toString()) continue } flag = true ans.append((sum - 2).toString()) } if (flag) { ans.append("1") } return ans.reverse().toString() } }
반응형'ETC' 카테고리의 다른 글
[LeetCode / Kotlin] Remove Covered Intervals (0) 2024.07.12 [LeetCode / Kotlin] Merge Intervals (0) 2024.07.12 [LeetCode / Kotlin] Pascal's Triangle (0) 2024.07.11 [LeetCode / Kotlin] Spiral Matrix (0) 2024.07.11 [LeetCode / Kotlin] Search Insert Position (0) 2024.07.11