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;
}
查看9道真题和解析