2020字节测开笔试凉经

早就考的了,菜鸡考的很烂就一直没发。。

一、每个用户类型对应一个模型文件,每种模型文件可对应多个用户类型,

输出模型文件和其对应的用户类型,若对应多个用户类型,用户类型按字典序排列,中间用空格隔开。

用户类型如: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;
}


#字节跳动##测试开发工程师##面经##校招#
全部评论
今天首页三个你帖子
点赞 回复 分享
发布于 2020-04-04 21:47
我为啥没笔试???
点赞 回复 分享
发布于 2020-04-11 01:50

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
1 9 评论
分享
牛客网
牛客企业服务