algorithm - 如何将长字符串转换为短字符串,并且是可逆操作

标签 algorithm go

我有一个来自 Base64 的长 string,但是它太长了,我如何将它转换为一个短字符串。我希望这是一个可逆的操作,因为我想从短的中得到长的。 顺便说一句,我不想​​将这两个字符串保存到数据库中。

最佳答案

由于 Pigeonhole principle,通常不可能将任意长字符串转换为任意短字符串:

  • 可逆性意味着转换域(小字符串)需要至少与转换域(大字符串)一样多的元素,
  • 与不同的短字符串相比,存在更多不同的长字符串。

作为整数的类比,考虑将 3 位数(900 种可能性)转换为 2 位数(90 种可能性)并且仍然可逆,因为 90 < 900。

但是,如果长字符串是可预测的并且有很多冗余,您可以尝试应用 gzip 等无损压缩算法,以便在常见情况下缩短它。

关于algorithm - 如何将长字符串转换为短字符串,并且是可逆操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68675654/

相关文章:

javascript - 如何将图像添加到电子邮件的 html 正文 (Go)

reflection - 如何从 golang 中的 reflect.Value 获取潜在值(value)?

algorithm - 探索算法

algorithm - 求点亮二叉树最少需要打开多少个开关

go - 从 Go 中的 channel 接收值

mongodb - 我应该将 context.Context 传递给 Go 中的底层数据库方法吗?

javascript - 我如何通过这个算法挑战?

c - 解析数学表达式

arrays - 矩阵遍历没有做最优路径

google-app-engine - GAE Go运行时1.11比运行时1.9需要更多实例。这很常见吗?