求二进制字符串中最频繁序列及前n个高频序列
二进制字符串高频序列统计需求
我有一个含重复字符的二进制字符串文本文件(示例:"0101001001111000010010011110010000000"),目前已经实现两个函数:
KMPSearch():统计指定序列的出现次数ex1():统计高频单个字符
现在需要实现功能:找出字符串中最频繁出现的序列,返回出现次数最多的前n个序列分组,结果格式和排序规则需符合以下示例。
示例说明
n=20时的返回结果
输入字符串:s = "01010010010001000111101100001010011001111000010010011110010000000"
返回列表:
[ (4, ['0001', '0011', '1100' ]), (5, ['011', '1000', '110' ]), (6, ['0000', '111']), (7, ['0010','1001' ]), (8, ['0100']), (10,['010']), (11,['000', '001', '11']), (12,['100']), (15,['01','10']), (23,['00']) ]
n=4时的返回结果
返回列表:
[ (11,['000', '001', '11']), (12,['100']), (15,['01','10']), (23,['00']) ]
结果规则
- 每个列表元素为元组:第一个值是序列出现次数
m,第二个值是所有出现m次的序列组成的列表 - 结果整体按出现次数从小到大排序(次数少的分组在前,次数多的在后)
- 返回前
n个次数分组(按次数聚合后的条目,而非单个序列)
内容的提问来源于stack exchange,提问作者MattMlgn
相关产品推荐
相关产品推荐

