algorithm - 用数学形式替换连续数字
问题描述
我正在研究压缩算法,我想用它的数学形式替换所有连续的数字,这在数学上不是逻辑的,但我的算法会知道并将其转换为原始形式。
假设我有字符串:
string input = "732183900000000000002389288888888888888";
你看到它有0000000000和8888888888888是主要的连续重复。
现在我想将它们转换为:
//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的语言都将被接受。对我来说主要的是算法。
请记住性能,因为它将用于大文件。
解决方案
老实说,这很简单:
- 一次解析一个字符的字符串。
- 检查前一个字符是否与当前字符相同。
- 如果相同,则增加一个计数器变量,否则将其重置为 0。
- 如果当我们将计数器重置为 0 时计数器值大于 1,则将 * 添加到结果中。
推荐阅读
- javascript - 节点服务器,html输入null
- reactjs - Redux Thunk:动作必须是普通对象
- c - 如何在 C 中获取不同时区的 Epoch 日期和时间?
- c++11 - std::vector.push_back(std::move(foo)) 有意义吗?
- java - 无法使用 marklogic-jena api 连接到 marklogic
- android - 在使用 android marshmallow 运行的 BBB 上没有显示
- java - 使用 Apache POI 和 Pdfbox 从 .docx 创建 PDF 时丢失样式
- html - 无法读取 angularjs v1 中未定义的属性成功
- java - 使用 Spring MVC 创建新的 ini 并更新参数
- angular - 如何为角度 4 反应形式中的“非必需”字段添加用于检查电子邮件的自定义验证是否已存在或不存在