阅读视图

发现新文章,点击刷新页面。

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; //没有进位,退出循环
        }
    }
};
❌