微软笔试8.26分享

欢迎互对答案~

// 第1题

int solution(string &S) {
    unordered_map<char, int> m;
    m[0] = -1;
    int n = S.size();
    int res = 0;
    int cur = 0;
    for (int i = 0; i < n; ++i) {
        cur ^= (1 << (S[i] - 'a'));
        if (m.count(cur)) res = max(res, i - m[cur]);
        else m[cur] = i;
    }
    return res;
}

// 第2题
int solution(vector<int> &A, int M) {
    // write your code in C++ (C++14 (g++ 6.2.0))
    unordered_map<int, int> m;
    int res = 0;
    for (const int &num : A) {
        int val = num >= 0 ? num : (num % M) + M;
        ++m[val % M];
        res = max(res, m[val % M]);
    }
    return res;
}

// 第三题
int solution(vector<int> &A, vector<int> &B) {
    // write your code in C++ (C++14 (g++ 6.2.0))
    unordered_set<int> s;
    int n = A.size();
    for (int i = 0; i < n; ++i) {
        if (A[i] == B[i]) s.emplace(A[i]);
    }
    for (int i = 0; i < n; ++i) {
        if (s.count(A[i]) || s.count(B[i])) continue;
        s.emplace(max(A[i], B[i]));
    }
    int res = 1;
    while (s.count(res)) {
        ++res;
    }
    return res;
}


#微软##微软笔试##笔试#
全部评论
第三题我也这么做的,不过不确定是不是最优
点赞 回复 分享
发布于 2022-08-27 17:56 四川
感谢分享的笔试经验
点赞 回复 分享
发布于 2022-08-27 16:46 河南

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务