1980. Find Unique Binary String
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.
Constraints:
n == nums.length
1 <= n <= 16
nums[i].length == n
nums[i] is either '0' or '1'.
Analysis:
In order to reduce the time complexity, we need to,
1. store the existing strings in a unordered_set, which makes the checking in O(1);
2. save the visited string, to avoid infinite loop;
Then we can start with the first string, and try to flip each char, until we can find a brand new string.
See the code below:
class Solution {
public:
string findDifferentBinaryString(vector<string>& nums) {
int n = nums.size();
unordered_set<string> st;
for(auto &a : nums) st.insert(a);
unordered_set<string> vis;
string res = nums[0];
while(st.count(res) > 0) {
for(int i=0; i<n; ++i) {
res[i] = res[i] ^ 1;
if(vis.count(res)) continue;
vis.insert(res);
if(st.count(res)) break;
return res;
}
}
return res;
}
};
No comments:
Post a Comment