LeetCode in Kotlin

3849. Maximum Bitwise XOR After Rearrangement

Medium

You are given two binary strings s and t, each of length n.

You may rearrange the characters of t in any order, but s must remain unchanged.

Return a binary string of length n representing the maximum integer value obtainable by taking the bitwise XOR of s and rearranged t.

Example 1:

Input: s = “101”, t = “011”

Output: “110”

Explanation:

Example 2:

Input: s = “0110”, t = “1110”

Output: “1101”

Explanation:

Example 3:

Input: s = “0101”, t = “1001”

Output: “1111”

Explanation:

Constraints:

Solution

class Solution {
    fun maximumXor(s: String, t: String): String {
        val cnt = IntArray(2)
        for (c in t.toCharArray()) {
            cnt[c.code - '0'.code]++
        }
        val ans = CharArray(s.length)
        for (i in 0..<s.length) {
            val x = s[i].code - '0'.code
            if (cnt[x xor 1] > 0) {
                cnt[x xor 1]--
                ans[i] = '1'
            } else {
                cnt[x]--
                ans[i] = '0'
            }
        }
        return String(ans)
    }
}