标题:兴趣小组

为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组(以下称A组,B组,C组)。

每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。

每个文件中存储的是学生的学号。

由于工作需要,我们现在想知道:既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?

请你统计该数字并通过浏览器提交答案。

注意:答案是一个整数,不要提交任何多余的内容。


笨笨有话说:
哇塞!数字好多啊!一眼望过去就能发现相同的,好像没什么指望。
不过,可以排序啊,要是每个文件都是有序的,那就好多了。

歪歪有话说:
排什么序啊,这么几行数字对计算机不是太轻松了吗?
我看着需求怎么和中学学过的集合很像啊…

算法与数据结构

文件读取+集合运算

Python

def readFile(file) -> set:
    tmp = set()
    with open(file, 'r') as fp:
        for line in fp.readlines():
            line = line.strip().split()
            for item in line:
                tmp.add(int(item.lstrip().rstrip().replace(',', '')))
    return tmp


if __name__ == '__main__':
    aSet = readFile("A.txt")
    bSet = readFile("B.txt")
    cSet = readFile("C.txt")
    print(len(aSet & bSet - (aSet & bSet & cSet)))