反正我今年秋招肯定是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秋招笔试心得体会##百度秋招##百度##百度笔试#