gpt4 book ai didi

java - 扁平化字典的采访Q

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:13 26 4
gpt4 key购买 nike

有这个面试题。

写一个函数来展平字典数组example_input:
example_input= [{a:{b:{c:{d:'e'}}}}, {a:{b:{c:{d:{e:'f'}}}}}]
example_output: [{a_b_c_d:'e'}, {a_b_c_d_e:'f'}]

  1. 如何在 java 中对该输入进行建模?
  2. 如何用 Java 解决这个问题。

上面的输入可以映射到什么样的数据结构?

class Node {
String s;
Node node;
}

我尝试使用这个 Node 类,它会导致 {node:{node:{node:{s:'value'} 而不是 {a:{b:{c :{d:'e'}}}}.

最佳答案

不要忘记字典是一对 (key, value) 的集合,具有键唯一的不变性。所以你可以将它们表示为:

class Dict {
List<Pair> pairs;
}

Pair 在哪里

class Pair {
String key;
Dict value;
}

或者如果你想要更一般的概念:

class Pair<T> {
T key;
Dict value;
}

请注意,您可以将单个值表示为一个 PairDict,值为 null。然后你的展平功能无效

Dict flatten(Dict dict) {
Dict new_dict = new Dict();
for (Pair pair : dict.pairs) {
if (pair.value == null)
new_dict.pairs.add(pair);
else
new_dict.pairs.addAll(combine(pair.key, flatten(pair.value)));
}
}

List<Pair> combine(String key, Dict value) { //here value is a flattened dict
List<Pair> pairs = new ArrayList<Pair>();
for (Pair pair : value.pairs) {
pairs.add(new Pair(key + "_" + pair.key, pair.value));
}
return pairs;
}

关于java - 扁平化字典的采访Q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com