当前位置: 首页 > 面试经验 >

2022-10-11百度笔试研发B卷-AK

优质
小牛编辑
151浏览
2023-03-28

2022-10-11百度笔试研发B卷-AK

反正我今年秋招肯定是0 offer,已经寄了,也不想学校,突然今天确实比较闲,想到很久没有写C++做题,就试着水下笔试题
,感觉难度额一般般吧,cf-div2-AB的难度?

写的很丑,少喷点

判断输入的字符串是否由"Baidu"随机排列构成

#include <bits/stdc++.h>
using namespace std;
int main() {
    int t; cin >> t;
    string res = "Baidu";
    sort(res.begin(), res.end());
    while(t--) {
        string str; cin >> str;
        sort(str.begin(), str.end());
        if(str == res) {
            cout << "Yes\n";
        } else {
            cout << "No\n";
        }
    }

    return 0;
}

输入数值t,使用字符‘r’,'e','d'三个字符串构造出,总的回文串个数为t的字符串

x范围<=1e9,输出长度小于1e5

/*
   思路挺简单的,因为限制长度小于1e5,所以必须要要找到一个构造的方法
   简单的想法,只考虑单个字符的回文情况
   例如:r是1,rr是3,rrr是6,rrrr是10.....
   其实简单的数学逻辑可以看到为1+2+3+4+....
   看成简单的dp也行
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
    long long t; cin >> t;
    vector<long long>f;
    long long base = 1, cur = 2;
    while(base <= 1e9 + 1){
        f.push_back(base);
        base += cur++;
    }
    char ca[3] = {'r', 'e', 'd'};
    int ci = 0;
    while(t > 0) {
        int index = lower_bound(f.begin(), f.end(), t) - f.begin();
        if(t < f[index]) {
            index--;
        }
        for(int i = 0; i <= index; i++) {
            cout << ca[ci];
        }
        ci = (ci + 1) % 3;
        t -= f[index];
    }

    return 0;
}

第一行输入一个数字t,第2,到1+t行输入一行字付出,模拟Java声明重载函数,合法则输出Yes,否则输出No

/*
   模拟题,没啥好方法
   把返回类型去掉,把括号“(”,“)”换成“,”
   我的思路,就是判断每次出现一对","和“ ”后就是一个类型的变量名
               只需要找到下一个","即可找到该变量名结束的下标
*/
#include <bits/stdc++.h>
using namespace std;
string substr(string str, int start, int end) {
    string res = "";
    int len = str.size();
    for(int i = start; i < len && i < end; i++) {
        res += str[i];
    }
    return res;
}
int find(string str, char c) {
    int len = str.size();
    for(int i = 0; i < str.size(); i++) {
        if(str[i] == c){
            return i;
        }
    }
    return -1;
}
int main() {
    int t; cin >> t;
    unordered_set<string>st;
    getchar();
    while(t--) {
        string str; getline(cin, str);
        int index = find(str, ' ');
        if(index > 0) {
            str = substr(str, index + 1, str.size());
        }
//         cout << "1:" << str << '\n';
        for(int i = 0; i < str.size(); i++) {
            if(str[i] == '(' || str[i] == ')') {
                str[i] = ',';
            }
        }
//         cout << "2:" << str << '\n';
        string tmp = "";
        int cur = 0, len = str.size();
        for(int i = 0; i < len; i++) {
            if(str[i] == ',' || str[i] == ' '){
                cur++;
            }
            if(cur == 2) {
                while(i + 1< len && str[i + 1] != ',') {
                    i++;
                }
                cur = 0;
            } else {
                tmp += str[i];
            }
        }
//         cout << "3:"<< tmp << '\n';
        if(st.count(tmp) >= 1) {
            cout << "No\n";
        } else {
            cout << "Yes\n";
            st.insert(tmp);
        }
    }

    return 0;
}
#百度2023秋招笔试心得体会##百度秋招##百度##百度笔试#
 类似资料: