gpt4 book ai didi

python - 任意长度子串的运行长度编码

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:42:37 25 4
gpt4 key购买 nike

什么是高效的(就时间复杂度而言)run length encoding任意但有限长度的输入流的算法。长度为 1 的子串的算法可以在 C 中实现为:

void encoding(char *bytes)
{
int c = 0;
char *s = bytes, ch;

while(*s) {
c=1;
ch=*s;

while(*s && *s== *(s+1)) {
c++;
s++;
}
printf("%d%c", c, ch);
s++;
}
}

但是,我正在寻找一种可以对任意长度的子字符串进行编码的更好算法。例如,对于输入 "abbabb",上面的代码将打印:"1a2b1a2b"。但更好的算法可以将其编码为 "2abb"

实现语言(C/Python 是我的选择)不是问题,因为我正在寻找一种算法。

最佳答案

任何可以找到一定长度重复子串的算法都可以用来实现具有该长度滑动窗口的 Lempel-Ziv 压缩。

所以我会研究 Lempel-Ziv 编码器并使用它。或者甚至更好:放弃运行长度编码并实现 Lempel-Ziv - 它只能提供更好的压缩。

关于python - 任意长度子串的运行长度编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com