【发布时间】:2019-03-01 09:59:39
【问题描述】:
我的 Dynamo DB 中有一张地图,存储方式如下:
"A|1,2,3,4|B" : "[some data]"
"C|5,6|D" : "[some data]"
"X|7,8,9,10,11,12,13|Y" : "[some data]"
..
为了便于讨论,假设上图中的每个键都是 LEFT、MIDDLE 和 RIGHT 三个字符串的串联结果,如:“LEFT|MIDDLE|RIGHT”。
我想知道给定的字符串是否是上图中的键。但是,中间字符串应该按此匹配的逗号值拆分。 示例:“A|1|B”和“A|3|B”都应该与第一个条目匹配。类似地,“C|5|D”匹配第二个条目,依此类推。
假设:MIDDLE 字符串可以是 1 到 200 个数字的串联(存储为字符串)。该地图有大约 35,000 个条目。
我想一种直接的方法是“扩展”原始映射并分解中间字符串上的每个条目以创建多个具有重复值的新键值对。但是,我的数据量很大,因此这种方法会花费大量的时间和空间复杂性。有没有一种优雅的方法可以在生产环境中解决这个问题?
【问题讨论】:
-
我们是否可以假设第一行中的[某些数据]通常不等于第二行和第三行中的[某些数据]等?
-
“LEFT”和“RIGHT”总是“A”和“B”吗?
-
中键使用
trie怎么样? -
MIDDLE 是否总是整数的连续区间?
-
@Boris 是的,“[某些数据]”对于所有条目都是唯一的。
标签: java algorithm data-structures