给你一个字符串数组 nums ,该数组由 n 个 互不相同 的二进制字符串组成,且每个字符串长度都是 n 。 请你找出并返回一个长度为 n 且 没有出现 在 nums 中的二进制字符串。 如果存在多种答案,只需返回 任意一个 即可。
示例 1:
输入:nums = ["01","10"]
输出:"11"
解释:"11" 没有出现在 nums 中。"00" 也是正确答案。
示例 2:
输入:nums = ["00","01"]
输出:"11"
解释:"11" 没有出现在 nums 中。"10" 也是正确答案。
示例 3:
输入:nums = ["111","011","001"]
输出:"101"
解释:"101" 没有出现在 nums 中。"000"、"010"、"100"、"110" 也是正确答案。
提示:
n == nums.length
1 <= n <= 16
nums[i].length == n
nums[i] 为 '0' 或 '1'
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-unique-binary-string 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
string findDifferentBinaryString(vector<string>& nums) {
unordered_set<int> s;
string ans;
for(auto& n : nums)
{
int number = 0;
for(char c : n)
{
number = number*2+(c-'0');
}
s.insert(number);
}
for(int i = 0; i < (1<<16); ++i)
if(!s.count(i))
{
ans = convert01(i);
while(ans.size() < nums[0].size())
{
ans.insert(ans.begin(),'0');
}
return ans;
}
return "";
}
string convert01(int x)
{
string ans = "";
while(x)
{
if(x&1) ans += "1";
else ans += "0";
x >>= 1;
}
reverse(ans.begin(), ans.end());
return ans;
}
};
4 ms 10 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!