Description
Given an array of strings nums
containing n
unique binary strings each of length n
, return a binary string of length n
that does not appear in nums
. If there are multiple answers, you may return any of them.
Example 1:
Input: nums = ["01","10"] Output: "11" Explanation: "11" does not appear in nums. "00" would also be correct.
Example 2:
Input: nums = ["00","01"] Output: "11" Explanation: "11" does not appear in nums. "10" would also be correct.
Example 3:
Input: nums = ["111","011","001"] Output: "101" Explanation: "101" does not appear in nums. "000", "010", "100", and "110" would also be correct.
Constraints:
n == nums.length
1 <= n <= 16
nums[i].length == n
nums[i]
is either'0'
or'1'
.- All the strings of
nums
are unique.
Solution
Python3
class Solution:
def findDifferentBinaryString(self, nums: List[str]) -> str:
N = len(nums)
res = []
root = [None, None, 0]
COUNT = 2
def add(x):
curr = root
for k in range(N):
bit = int(x[k])
if curr[bit] is None:
curr[bit] = [None, None, 0]
curr = curr[bit]
curr[COUNT] += 1
for x in nums:
add(x)
curr = root
for k in range(N):
left, right = curr[0][COUNT] if curr[0] is not None else 0, curr[1][COUNT] if curr[1] is not None else 0
bit = 0 if left < right else 1
res.append(str(bit))
if curr[bit] is None:
curr[bit] = [None, None, 0]
curr = curr[bit]
return "".join(res)