Python3如何通过识别最大重复模式将字符串列表转为元组列表?
字符串模式提取与内存优化需求
核心需求
- 处理由无空格大字符串组成的列表,识别其中重复字符模式,转换为两个列表:
- 模式列表:仅存储所有唯一模式一次,单个模式长度至少为2(特殊情况除外),且尽可能长(指针本身占用内存,需平衡模式长度与指针数量);单次出现的模式用单个指针表示。
- 指针列表:由指向模式列表的索引构成的元组/列表,需能完全还原原始字符串。
- 算法需达到最优线性复杂度,确保处理用户输入时效率足够,避免过长等待。
- 解压逻辑必须极简,可在无zlib等压缩库支持的低内存简单语言中实现(允许压缩侧算法复杂)。
示例说明
输入:
['FOOBAR', 'BARFOO']
期望输出:
模式列表:['FOO', 'BAR'] 指针列表:[(0, 1), (1, 0)]
功能演示脚本
def getLists(str_list): # 待实现逻辑 return pointers, out_strings strings = ["FGJohnyRFGDERT", "VBSJohnR", "AAERFGR"] pointers, out_strings = getLists(strings) print(pointers, out_strings) # 预期输出: [(0, 1, 2, 0, 3, 4, 5), (6, 1, 7), (8, 4, 0, 7)] ["FG", "John", "yR", "D", "ER", "T", "VBS", "R", "AA"]
补充说明
曾考虑使用zlib等通用压缩算法,但因需在无对应库支持的低内存简单语言中解压,因此仅允许压缩侧逻辑复杂,解压逻辑必须极简。
内容的提问来源于stack exchange,提问作者Amae Saeki
相关产品推荐
相关产品推荐

