[题目解析]找朋友

找朋友(friends)

时间限制: 1000 ms 空间限制: 262144 KB

题目描述

小学毕业后,同学们都进入了不同的初中,小明非常想念小伙伴们,所以他打算联系小学的同学们。
现在他得到了市内某所初中的所有名单,找出其中小明的小伙伴们。

输入

第一行一个整数n,表示某初中人数。
接下来n行,每行一个字符串,只有小写字母组成,表示该校每个人的拼音。数据保证没有人拼音相同,且已经按照字典序从小到大排序。
第n+2行有一个整数m,表示小明的小伙伴个数。
最后m行,每行一个字符串,只有小写字母组成,表示每个小伙伴的拼音,同样保证没有重复。

输出

输出所有在该校的小伙伴的拼音。
每行一个拼音,顺序按照小伙伴给出的顺序。

样例输入

样例输入1:
3
alice
bob
zhangsan
2
lisi
zhangsan
样例输入2:
2
lisi
zhangsan
3
zhangsan
lisi
alice

样例输出

样例输出1:
zhangsan
样例输出2:
zhangsan
lisi

数据范围限制

对于70%的数据,n<=1000,m<=100
对于100%的数据,n<=100000,m<=10000,每个人拼音长度不超过15。
所有数据,学校学生名单中的姓名,都是按照字典序从小到大排序。

提示

样例1解释:
学校有3人,小伙伴有2个,zhangsan在这个学校,因此输出zhangsan
样例2解释:
学校有2人,小伙伴有3个,有zhangsan和lisi两人出现在名单中,小伙伴名单输入时lisi在zhangsan后面,所以在输出的小伙伴名单中,lisi排在后面。

这道题目我一开始做的时候确实是想复杂了,做复杂了。不多说,先看10分代码,详见注释↓↓↓

#include<bits/stdc++.h> using namespace std; int n,m; struct friends{//结构体 int sum;//看看出现了几次 char name[16];//名字 }a[100001],b[10001]; bool c[100001]; int s; int main() { cin>>n;//输入,不废话了 for(int i=1;i<=n;i++){ cin>>a[i].name; a[i].sum=0; } cin>>m; for(int i=1;i<=m;i++){ cin>>b[i].name; b[i].sum=0; } for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){//两层循环,找出有的名字 s=0; for(int k=1;k<=strlen(b[i].name);k++){//两两匹配,看看是不是一样 if((int)(a[j].name[k])==(int)(b[i].name[k])){//如果当前字母相同,S++; s++; } } if(s==strlen(b[i].name)){//如果全部字母都一样, b[i].sum++; b[i].sum++; } } } for(int i=1;i<=n;i++){ if(b[i].sum){//如果SUM加过,那就输出 puts(b[i].name); cout<<endl; } } }

接下来来看100分代码吧!(详见注释),这份代码十分简洁↓↓↓↓

#include<bits/stdc++.h> using namespace std; map<string,bool> mat;//使用map能更快捷完成本题 int main() { int n,m; string a; cin>>n; for(int i=1;i<=n;i++){ cin>>a; mat[a]=true;//将mat[a]变成true,以便于后面判断 } cin>>m; for(int i=1;i<=m;i++){ cin>>a; if(mat[a])cout<<a<<endl;//输进来一个就看看之前有没有出现过,如果有就输出 } } //超级简洁,18行代码搞定(((o(*゚▽゚*)o)))

这篇文章有什么不足请在评论区留言哦!♪(^∀^●)ノ
вye вyЁ


__EOF__

本文作者zswangziye
本文链接https://www.cnblogs.com/zswangziye/p/16056509.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   zswangziye  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示