3 条题解
-
1
正则大法好
import re # 读取求救者的人数 n = int(input()) # 初始化 st 数组用于存储每个求救信号 'sos' 出现次数对应的求救者名字 st = [0] * 1000 for i in range(1000): st[i] = [] # 初始化变量 mx 用于记录最大的 'sos' 出现次数 mx = 0 for i in range(n): name = input() # 读取名字 sig = input() # 读取求救信号 # 使用正则表达式查找重叠的 'sos',计算出现的次数 # 正则表达式 r'(?=(sos))' 的含义: # '(?=...)' 是正向前瞻断言,它会查找紧接着条件表达式的位置 # '(sos)' 是要匹配的内容,写在前瞻中意味着搜索从每个字符开始检查是否接下来的字符构成 'sos' # 这样做将允许正则找到所有的重叠的 'sos' 模式 num = len(re.findall(r'(?=(sos))', sig)) # 把所有出现次数为 num 的求救者名字存储起来 st[num].append(name) # 更新最大次数 mx = max(mx, num) # 输出所有出现次数最多的求救者的名字 for name in st[mx]: print(name, end=' ') print() # 输出最大次数 print(mx)
信息
- ID
- 932
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 842
- 已通过
- 173
- 上传者