算法问题,求解字典中的变量

时间:2019-03-03 09:50:27

标签: algorithm dictionary data-structures

给问题的主意提供键和值的字典(哈希表,该问题与语言无关),其中键是整数或字母变量的地址,用所有字母替换它们代表的正确值。例如,

Given: {"a": "12.x.y.3", "x": "4", y: "x.x"}
Output: {"a": "12.4.4.4.3", "x": "4", y: "4.4"}

正在考虑实现此目的的最佳方法。我想到的方法是遍历键,每次遇到非整数字符时,都会递归直到达到“整数”值。

对于有效的方法(明智的时间复杂度),我们将不胜感激其他任何想法/伪代码。

1 个答案:

答案 0 :(得分:0)

构建一个有向无环图,以每个 Key 作为节点,如果第一个需要第二个值,则从一个关键点到另一个关键点边缘。因此,在您的示例中将出现以下边缘:

  

(a-> x),(a-> y),(y-> x)

现在topologically sort图形。在这种情况下,它们将是[a,y,x],即叶节点,具有整数值的叶节点将被放置在最后。现在,如果您从末尾开始进行迭代以填充output字典,那么对于任何键,它所依赖的所有其他键都已经转换为int了。因此,您无需为同一键重复多次操作。

或者,您知道,您可以使用动态编程来记录重复的呼叫:)