LeetCode 1980. Find Unique Binary String Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
1980. Find Unique Binary String

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.

Solutions

Solution 1: Counting + Enumeration

Since the number of '1's in a binary string of length n can be 0, 1, 2, …, n (a total of n + 1 possibilities), we can always find a new binary string whose count of '1's differs from every string in nums.

We use an integer mask to record the counts of '1's across all strings, where the i-th bit of mask being 1 indicates that a binary string of length n with exactly i occurrences of '1' exists in nums, and 0 otherwise.

We then enumerate i starting from 0, representing the count of '1's in a binary string of length n. If the i-th bit of mask is 0, it means no binary string of length n with exactly i occurrences of '1' exists, and we can return that string as the answer.

The time complexity is O(L), where L is the total length of all strings in nums. The space complexity is O(1).

PythonJavaC++GoTypeScriptJavaScriptC#
class Solution: def findDifferentBinaryString(self, nums: List[str]) -> str: mask = 0 for x in nums: mask |= 1 << x.count("1") for i in count(0): if mask >> i & 1 ^ 1: return "1" * i + "0" * (len(nums) - i)(code-box)

Solution 2: Construction

We can construct a binary string ans of length n, where the i-th bit of ans differs from the i-th bit of nums[i]. Since all strings in nums are distinct, ans will not appear in nums.

The time complexity is O(n), where n is the length of the strings in nums. Ignoring the space used by the answer string, the space complexity is O(1).

PythonJavaC++GoTypeScriptJavaScriptC#
class Solution: def findDifferentBinaryString(self, nums: List[str]) -> str: ans = [None] * len(nums) for i, s in enumerate(nums): ans[i] = "1" if s[i] == "0" else "0" return "".join(ans)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !