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.
Related Topics:
Array, String, Backtracking
Similar Questions:
- Missing Number (Easy)
- Find All Numbers Disappeared in an Array (Easy)
- Random Pick with Blacklist (Hard)
Hints:
- We can convert the given strings into base 10 integers.
- Can we use recursion to generate all possible strings?
// OJ: https://leetcode.com/problems/find-unique-binary-string/
// Author: github.com/lzl124631x
// Time: O(N^2)
// Space: O(N)
class Solution {
public:
string findDifferentBinaryString(vector<string>& A) {
int n = A.size();
unordered_set<int> s;
for (auto &n : A) s.insert(stoi(n, 0, 2));
for (int i = 0; i <= n; ++i) {
if (s.count(i)) continue;
string ans;
for (int j = 0; j < n; ++j) ans[len - j - 1] = '0' + (i >> j & 1);
return ans;
}
return "";
}
};