将“缓存控制器”抽象为一个按“进入顺序”维护的容器,每个字符串只保留一份,并记录其累计出现次数。
每行读入后:
null
。核心算法
有一个故障字符串序列由多行组成,每一行内有多个字符串,分别用空格隔开。现需要对这个字符串序列进行限流显示处理,显示规则如下:
1.输入的第一行为一个数字,表示限流参数 n
2.从第 2 行开始为要处理的字符串数据,我们需要将每一行数据流入一个缓存控制器,缓存中的信息包括字符串和其个数信息
3.每行输入数据中的字符串可能在缓存中有重复,如果有重复需要在缓存中对字符串的个数 +1
4.每一行流入后需要从当前缓存中取出最早的数据进行输出,取出的数据上限为限流参数 n ,如果数据未取完将继续保存在缓存中,取出的数据将从缓存中删除,后续缓存的相同字符串将重新开始计数
输入的第一行为限流个数 n ,n 的范围为 [0,100],n=0 表示每次输入后不输出缓存中的数据
输入的第 2 行之后为要处理的数据,每行的字符串用空格隔开
每行输入的字符串个数最大为 200 个,最大输入行数为 1000 行
输入的第 2 行开始每一行对应一行输出信息,每行输出格式为字符串和出现的个数,用空格隔开。
当缓存没有数据输出时,输出 null
输入
5
abc a b c
ad bc
输出
abc 1 a 1 b 1 c 1
null
ad 1 bc 1
说明
限制单次输出 5 个不同字符串
第一行输入为 abc a b c ,输入后缓存是 abc a b c ,次数均为 1
因此第一行输出是 abc 1 a 1 b 1 c 1
第 2 行输入为空行,之前缓存为空,输入后缓存是空,因此第 2 行输出为 null
第 3 行输入为 ad bc ,之前缓存为空,输入后缓存是 ad bc , 次数均为 1 ,因此第 3 行输出为 ad 1 bc 1
所以最终输出为:
abc 1 a 1 b 1 c 1
null
ad 1 bc 1
输入
5
hard_bad dbms_error r_los low_power
mem_over mem_bad bit_error low_power storage_fail
hard_bad dbms_error r_los
hard_bad dbms_error r_los power_off
输出
hard_bad 1 dbms_error 1 r_los 1 low_power 1
mem_over 1 mem_bad 1 bit_error 1 low_power 1 storage_fail 1
hard_bad 1 dbms_error 1 r_los 1
hard_bad 1 dbms_error 1 r_los 1 power_off 1
说明
第一行 5 表示每次最多输出 5 个字符串信息
第 2 行输入为 4 个不同的字符串,流入缓存后,缓存只有 4 个字符串,全部输出,次数均为 1
第 2 次输入为有 8 个不同字符串,流入缓存后,缓存只有 8 个字符串,输出前 5 个,次数均为 1 ,
输出后缓存中有 hard_bad dbms_error r_los , 次数都是 1
第 3 次输入时 hard_bad,dbms_error,r_los 缓存中存在,计数加 1 , 输入后出现次数为 2 ,最后的 power_off 出现次数为 1 ,全部输出