java - 模式游程编码

标签 java run-length-encoding

我正在尝试找到最简洁的方法来执行基于模式的游程编码。目标是通过分解由多个相同模式组成的子字符串来压缩字符串。

原始字符串:

start{3}{3}{3}{3}end

如您所见,有 4 个“{3}”模式。可以通过将 4 个“{3}”模式的运行表示为 $4{3} 来压缩此字符串。 .

我想获得的压缩字符串:

start$4{3}end

我尝试了 String.replaceAll(regex, replacement)方法。我知道 myString.replaceAll("\\{([^<])\\}", "$1")可以仅用其值替换整个模式,但我找不到如何使用正则表达式检测和计算相同模式运行的长度

使用正则表达式是个好主意还是有其他“更好”的方法来做到这一点?

最佳答案

您可以将 java.util.zip.GZIPInputStreamjava.util.zip.GZIPOutputStreamByteArrayInputStream 结合使用ByteArrayOutputStream 对字符串进行 gzip/gunzip,这可能比编写自己的压缩算法更好(除非您可以使用有关要压缩的数据的知识)。

关于java - 模式游程编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25726923/

相关文章:

r - 如何拆分值的数据帧并在 block 上使用 rle?

java - 将 Java EE Web 应用程序部署到 Wildfly/JBoss EAP

java - 时区 BST 的偏移量错误

java - 使用 dataprovider 设置 expectedExceptions

java - Atmosphere 框架示例不起作用。任何想法?

java - Android:如何将枚举标签添加到微调器,而不是 enum.values()?

bitmap - 与 RLE 位图中的字边界对齐 : contradiction in Microsoft documentation

R 如何在给定起点和终点的 Tibble 中生成序列

r - 根据R代码中特定值的运行长度计算变量

r - 创建连续值的组名