首页 > 解决方案 > 用数学形式替换连续数字

问题描述

我正在研究压缩算法,我想用它的数学形式替换所有连续的数字,这在数学上不是逻辑的,但我的算法会知道并将其转换为原始形式。 假设我有字符串:

string input = "732183900000000000002389288888888888888";

你看到它有00000000008888888888888是主要的连续重复
现在我想将它们转换为:

//convert 000000000 to 0*9. Means 9 times 0.
//convert 888888888 to 8*9. Means 8 times 0.
string output = "7321839" +
                "0*13"    +
                "23892"   +
                "8*14";
//or
string output = "7321839-0*13-23892-8*14";

需要考虑的要点:
任何适用于windows的语言都将被接受。对我来说主要的是算法。 请记住性能,因为它将用于文件。

标签: algorithmcompressionnumber-formatting

解决方案


老实说,这很简单:

  • 一次解析一个字符的字符串。
  • 检查前一个字符是否与当前字符相同。
  • 如果相同,则增加一个计数器变量,否则将其重置为 0。
  • 如果当我们将计数器重置为 0 时计数器值大于 1,则将 * 添加到结果中。

推荐阅读