2020字节测开笔试凉经
早就考的了,菜鸡考的很烂就一直没发。。
2、
#字节跳动##测试开发工程师##面经##校招#一、每个用户类型对应一个模型文件,每种模型文件可对应多个用户类型,
输出模型文件和其对应的用户类型,若对应多个用户类型,用户类型按字典序排列,中间用空格隔开。
用户类型如:1.txt
模型文件如:abc
错误理解题意:以为是对模型文件按字典序排序,然后输出,实际是模型文件按输入顺序输出,同时如果对应多个用户类型,用户类型按字典序输出。
(注意输入的模型文件和用户类型可能有重复,需要去重)
#include<iostream> #include<vector> #include<string> #include<map> #include<set> using namespace std; int main() { int n; set<string> s[1005]; string str, tmp; vector<string> vec; map<string, int> mp; cin >> n; int cnt = 0; for (int i = 0; i < n; i++) { cin >> str >> tmp; if (mp[tmp] == 0) mp[tmp]=++cnt, vec.push_back(tmp); //++cnt先加再赋值 s[mp[tmp]].insert(str);//使用Set可以自动有序且可以去重 } cout << cnt << endl; for (int i = 0; i < cnt; i++) { cout << vec[i]; //模型文件按输入的顺序输出 set<string>::iterator it; for (it = s[i+1].begin(); it != s[i+1].end(); it++) cout << " " << *it;//cnt记录了不重复的个数,不会发生越界 puts(""); } //return 0; }
2、
二、多行输入,遇到输入非数字就停止,将数字存入数组或容器中,如:
1
2
3
a
在所有输入的数字中,找出所有长度大于n/2的数字,
输出其个数以及数字是多少,每个占一行。
#include<vector> #include<string> #include<iostream> #include<algorithm> using namespace std; using namespace std; bool check(string a) { for (int i = 0; i < a.length(); i++) { if (isdigit(a[i])) continue; return false; } return true; } int trans(string a) { int ret = 0; for (int i = 0; i < a.length(); i++) { ret = ret * 10 + a[i] - '0'; } return ret; } int main() { string a; vector<int> ret; while (cin >> a) { if (check(a)) { ret.push_back(trans(a)); } else break; } for (auto i : ret) { cout << i << endl; } return 0; }