📅  最后修改于: 2023-12-03 15:12:46.224000             🧑  作者: Mango
本题为嵌套较多的字符串处理题目,要求学生实现一个函数,将给定字符串处理成特定格式。
在一个门口,有个人不停地开门,有些人进门,有些人出门。门口的记录经过了一位工作人员的整理,现在记录下来了一段时间内的开门情况,请你将它整理成以下格式:
in XXX
,其中 XXX 是进门人员的姓名;out XXX
,其中 XXX 是出门人员的姓名。输入:字符串 S,S 中每一行表示一次开门操作,由一个大写字母 I 或 O 和一个人的姓名组成,中间用一个空格隔开。
输出:按照要求整理后的字符串。
第一行是整数 N,表示记录的条数。
接下来 N 行,每行一个字符串,表示一次开门操作。其中第一个字符为大写字母 I 或 O,表示进门或出门,后面跟着空格和人名,人名为一个不超过 20 个字符的字符串,中间没有空格。
输出整理后的字符串,每个操作占一行。
9
I Alice
O Bob
I Carol
I Dave
O Carol
O Dave
I Eve
I Frank
O Alice
in Alice
out Bob
in Carol
in Dave
out Carol
out Dave
in Eve
in Frank
out Alice
题目给出的输入格式中,每个字符串都有两部分组成:一个字母表示进门或出门(I 或 O),以及一个字符串表示人名。我们可以使用字符串的 split() 方法将每条记录切分成这两个部分,然后按照题目要求拼接成合适的字符串。
步骤如下:
['I/O', 'name']
的形式。下面是 Python 的参考代码:
def format_door_records(S):
res = []
for record in S:
operation, name = record.split()
if operation == 'I':
res.append('in ' + name)
else:
res.append('out ' + name)
return res
这道题只要简单地遍历所有记录一遍,时间复杂度为 $O(N)$,其中 $N$ 是记录条数。由于只需要保存输出字符串,空间复杂度也为 $O(N)$。实际上,这个算法的常数较小,可以通过本题。