5851. 找出不同的二进制字符串 - 模拟
5851. 找出不同的二进制字符串
第二道题。
给了咱几个二进制的字符串,要我们返回一个没有出现的等长二进制字符串。
想法比较简单,我们把出现的字符串都放进set里方便查找,然后遍历长度为n的二进制字符串,输出第一个没出现的即可。
因为遍历时要做二进制字符串的+1操作,涉及一点string的大数模拟,做过的应该都觉得蛮简单的。
才第二题,别想太多,写就完事了!
模拟
`
###c++
class Solution {
public:
int n;
string findDifferentBinaryString(vector<string>& nums) {
n = nums.size();
set<string> myhash; //字符串集合
for(auto s: nums) myhash.insert(s); //把每个字符串都放入set
string ans(n, '0');
while(myhash.find(ans) != myhash.end()) add(ans); //遍历到第一个找不到的字符串
return ans;
}
void add(string& s){
bool flag = true; //表示进位
for(int i = 0; i < n; ++i){
if(flag){
if(s[i] == '0'){ //0的进位处理
s[i] = '1';
flag = false;
}else s[i] = '0'; //1的进位处理
}else break; //没有进位,退出循环
}
}
};