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秋招笔试心得体会##百度秋招##百度##百度笔试#
