运行长度编码-在多个连续数据元素中出现相同数据值的序列存储为单个数据值和计数。
使用游程编码时:
Input: ABBBCCACB
Output: 1A3B2C1A1C1B此示例的输出大于输入。
相反,可以通过删除结果中的数据值来简化二进制输入,
Input: 10001110101
Output: 1331111它要小得多。这是因为,从逻辑上讲,如果有一个“下一个子集”,那么它必须具有与当前子集不同的数据值。因为只有两个可能的值(1和0),所以您总是知道"next“数据值子集。
实现上面演示的二进制游程编码.
In: 101011101011000011
Out: 11113111242
In: 01001010001
Out: 11211131
In: 000000000
Out: 9您可能会假设没有一个子集会超过9个字符(不会有10个相邻的零)。
https://codegolf.stackexchange.com/questions/67551
复制相似问题