ETC
[LeetCode / Kotlin] Add Binary
최호랭
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()
}
}
반응형