目录
🍋题目描述
为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组
(以下称A组,B组,C组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。
每个文件中存储的是学生的学号。
由于工作需要,我们现在想知道:
既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?
请你统计该数字并通过浏览器提交答案。
注意:答案是一个整数,不要提交任何多余的内容。
笨笨有话说:
哇塞!数字好多啊!一眼望过去就能发现相同的,好像没什么指望。
不过,可以排序啊,要是每个文件都是有序的,那就好多了。
歪歪有话说:
排什么序啊,这么几行数字对计算机不是太轻松了吗?
我看着需求怎么和中学学过的集合很像啊…
🍋思路
笨笨,人如其名,它的方法不可取。歪歪的想法可取。
我们把逐行读文件,数字以逗号进行切割,舍去空格,之后存进集合。最后比较集合。
代码呢,没有给出文件路径,因为我们也没有文件嘛。我们懂得思路就行。
🍋源代码
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class Main
{
public static void main(String[] args){
int ans=0;
Set<String> A=new HashSet<String>();
Set<String> B=new HashSet<String>();
Set<String> C=new HashSet<String>();
read(A,"文件路径");//调用函数
read(B,"同上");
read(C,"同上");
for(String a:A) {
if(B.contains(a)&&!C.contains(a)) {
ans++;
}
}
System.out.println(ans);
}
private static void read(Set<String> set,String path) throws IOException {
BufferedReader reader=new BufferedReader(new FileReader(path));
String line="";
while(true) {
line=reader.readLine();
if(line==null)break;
String [] split=line.split(",");//以逗号为分割
for(String s:split) {
String trim =s.trim();//去除空格
if(trim.length()>0) {
set.add(trim);//加入set
}
}
}
reader.close();
}
}
🍋其他真题
链接: 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解.