【发布时间】:2010-12-24 07:55:46
【问题描述】:
有一组以特定方式排列的数据(如树),如下所示。基本上是一个 key=value 对,最后有一些附加值,它告知分支有多少个孩子以及一些垃圾值。
11=1 123 2
11=1>1=45 234 1
11=1>1=45>9=16 345 1
11=1>1=45>9=16>2=34 222 1
11=1>1=45>9=16>2=34>7=0 2234 1
11=1>1=45>9=16>2=34>7=0>8=0 22345 1
11=1>1=45>9=16>2=34>7=0>8=0>0=138 22234 1
11=1>1=45>9=16>2=34>7=0>8=0>0=138>5=0 5566 1
11=1>1=45>9=16>2=34>7=0>8=0>0=138>5=0>4=0 664 1
11=1>1=45>9=16>2=34>7=0>8=0>0=138>5=0>4=0>6=10 443 1
11=1>1=45>9=16>2=34>7=0>8=0>0=138>5=0>4=0>6=10>3=11 445 0
11=1>1=47 4453 1
11=1>1=47>9=16 887 1
11=1>1=47>9=16>2=34 67 1
11=1>1=47>9=16>2=340>7=0 98 1
11=1>1=47>9=16>2=34>7=0>8=0 654 1
11=1>1=47>9=16>2=34>7=0>8=0>0=138 5789 1
11=1>1=47>9=16>2=34>7=0>8=0>0=138>5=0 9870 1
11=1>1=47>9=16>2=34>7=0>8=0>0=138>5=0>4=0 3216 1
11=1>1=47>9=16>2=34>7=0>8=0>0=138>5=0>4=0>6=10>3=11 66678 0
我的问题是从上述数据中获取适当的分支,它完全满足我作为输入给出的值。 假设,我在上述数据堆栈中搜索的输入值为:
5=0
4=0
6=10
3=11
11=1
1=45
0=138
9=16
2=34
7=0
8=0
对于上面给出的键值列表,函数应该返回 11=1>1=45>9=16>2=34>7=0>8=0>0=138>5=0> 4=0>6=10>3=11 作为匹配。 同样,对于另一个输入文件,其中给出了另一组键:
5=0
4=0
6=10
3=11
11=1
1=45
9=16
2=34
7=0
8=0
该函数应返回 11=1>1=45>9=16>2=34>7=0>8=0 1 作为匹配项。不是最后一行;因为这也将匹配我输入键中给出的所有值,但是,我只想要完全匹配。
另外,我想知道在给定数组中选择了多少个节点。 (由 > 分隔)。
实现这种场景的最佳方式是什么?
【问题讨论】:
-
你能扩展输入格式吗?
-
您的问题是将输入行的 子集 与树中根的路由匹配吗?此外,由于您的输入包含 1=45 而最后一行仅包含 1=47,因此树中的最后一行如何匹配您的第二个键中的所有值?
-
另外,你的“树”是否总是和这个例子一样——根的两个孩子是不同的,而两个子树之间的所有其他值都相同?或许可以利用该属性来获得更高效的算法。
-
@sundar:我上面给出的只是树的一个例子。有许多其他方法可以形成树,是的,问题是与输入中给出的树的子集相匹配。
标签: language-agnostic parsing data-structures tree