gpt4 book ai didi

c++ - 使用重复字符压缩字符串

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

我的字符串只包含“U”、“D”、“L”、“R”字符(迷宫中的方向)。

字符串可能看起来像这样:

  • RRRRRDRRDDDRRUUUUDDRRRRUULLU
  • DDLDDLDDLDDLDDLDDLDDLDDLDDLDDL
  • LUUURRDRRDLUUURRDRRD

我想压缩这个指令序列。

例如。

1.压缩前:ULULUL压缩后:3(UL)

2。压缩前:DDLDDLDDLDDLDDLDDLDDLDDLDDLDDL压缩后:10(DDL)

3。压缩前:LLLLDLLLLDLLLLD压缩后:3(4LD)

有人知道这样的算法吗?

谢谢。

最佳答案

不,不要使用游程编码,结果会很糟糕。

相反,进行位打包:将四个方向中的每一个编码为 2 位,然后将四个 2 位对打包成一个字节。

因此:U = 00b (0d),D = 01b (1d),L = 10b (2d), R = 11b (3d).

(注:'b'后缀表示二进制,'d'后缀表示十进制。)

因此,LLLL = 10101010b 只有 1 个字节长。

编辑

从 OP 的评论来看,压缩的结果需要是一个仅由可打印字符组成的字符串。那么,我会说 OP 需要的算法称为 Huffman Coding (wikipedia) .我不知道有任何生成可打印文本的实现(因为大多数人会发现这样的事情会完全破坏压缩的目的),但理论上可以以输出可打印字符的方式实现算法.无论如何,OP 正在询问是否有人知道这样的算法,所以,就是这样。

关于c++ - 使用重复字符压缩字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28519559/

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