将IP映射到城市的数据结构

时间:2013-04-14 13:06:45

标签: performance algorithm data-structures

我正在阅读来自不同公司的面试问题,我遇到了这个问题:

You are given a fixed file. The format of each line is city name, ip address
range. Construct a data structure and design algorithm to achieve efficient
mapping from an ip address to city name.

我认为可行的一种方法是工作,虽然在线性时间内是一个简单的链接列表,你可以获得给定范围的起始IP,你拥有城市的节点和范围内的最终IP。

因此,在查找内容时,您将遍历列表并检查开始和结束IP地址,以查看给定的IP是否在任何范围内。

这假设IP范围不重叠。

有人有更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您可以存储32位的IP地址,因此只需将它们转换为整数,然后将(IP, City)对存储在密钥为IP的任何balanced BSThash table中。查找复杂性将以对数或常量为单位。

答案 1 :(得分:0)

您可以为每个虚线部分创建树结构,叶节点将是城市

Root
|
[0-13]     [14-255]
|              |
[0-255]    [0-173],    [174-255]
|              |                |
[0-255]    [0-255]      [0-255]
|              |                |
[0-255]    [0-255]      [0-255]
|              |                |
London   Belfast      Berlin

等。然后地图一个地址到一个你刚走过树的城市,所以14.183.1.123将是柏林