3849. Maximum Bitwise XOR After Rearrangement
Description
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:
- One optimal rearrangement of
tis"011". - The bitwise XOR of
sand rearrangedtis"101" XOR "011" = "110", which is the maximum possible.
Example 2:
Input: s = "0110", t = "1110"
Output: "1101"
Explanation:
- One optimal rearrangement of
tis"1011". - The bitwise XOR of
sand rearrangedtis"0110" XOR "1011" = "1101", which is the maximum possible.
Example 3:
Input: s = "0101", t = "1001"
Output: "1111"
Explanation:
- One optimal rearrangement of
tis"1010". - The bitwise XOR of
sand rearrangedtis"0101" XOR "1010" = "1111", which is the maximum possible.
Β
Constraints:
1 <= n == s.length == t.length <= 2 * 105s[i]andt[i]are either'0'or'1'.
Solutions
Solution 1: Greedy
We use an array \(\textit{cnt}\) of length \(2\) to count the number of character '0' and character '1' in string \(t\).
Then we iterate through string \(s\). For each character \(s[i]\), we want to find a character in string \(t\) that is different from \(s[i]\) to perform the XOR operation, in order to get a larger result. If we find such a character, we set the \(i\)-th bit of the answer to '1' and decrement the count of that character by one; otherwise, we can only use a character that is the same as \(s[i]\) for the XOR operation, the \(i\)-th bit of the answer remains '0', and we decrement the count of that character by one. Finally, we return the answer.
The time complexity is \(O(n)\) and the space complexity is \(O(n)\), where \(n\) is the length of string \(s\).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |