java - 缩短排序列表

标签 java algorithm

假设您有一个包含服务器名称的排序列表。您希望尽可能紧密地折叠它们。

例子:

abcd01c, abcd02c, abcd04c, abcd05, z1x

应该变成

abcd0[1-4]c,abcd05,z1x

处理此类问题的最简单算法是什么?

最佳答案

我会将所有字符串存储在前缀映射中,这使得判断字符串是否存在变得非常容易,并且还允许快速迭代字符串的子集。

将字符串存储为:

(0)abcd01c
(5)     2c, 
(5)     4c, 
(4)    05, 
(0)z1x

数字是必须从前一个字符串中取出的字符数。这是电话簿等字典的常见实现,您必须在其中存储许多相似的字符串。

A Trie是一个类似的结构,如Brian Roach在评论中注意到。

关于java - 缩短排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525064/

相关文章:

java - Maven:将多个模块 jar 组合成一个 war 文件?

java - 递归搜索数组 - CodingBat

c++ - 了解 OPT 算法

c++ - 在结构 vector 中查找

c - 算法设计手册,第三章,链表代码片段混淆

python - 高效的元组列表比较

java - 如何在RecycleView Multi ViewHolder中使用数组显示数据?

Java内存分配DXX和XX的区别

java - spring-boot 属性不是@Autowired

java - GAE 作为桌面应用程序 (Swing) 的服务提供者