Formatted question description: https://leetcode.ca/all/1980.html

# 1980. Find Unique Binary String

Medium

## 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'.

## Solution

The number range of numbers with binary string of length n is [0, 2^n - 1]. Convert all elements in nums into integers, and loop over the integers from 0 to 2^n - 1 and find the first integer that is not in nums.

class Solution {
public String findDifferentBinaryString(String[] nums) {
int length = nums.length;
int maxNum = (1 << length) - 1;
Set<Integer> set = new HashSet<Integer>();
for (String num : nums)
int different = 0;
for (int i = 0; i <= maxNum; i++) {
if (!set.contains(i)) {
different = i;
break;
}
}
String differentStr = toBinaryString(different, length);
return differentStr;
}

public String toBinaryString(int num, int length) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int remainder = num % 2;
sb.append(remainder);
num /= 2;
}
sb.reverse();
return sb.toString();
}
}