Redian新闻
>
这道雅虎的面试题绝了,有谁会做吗
avatar
这道雅虎的面试题绝了,有谁会做吗# JobHunting - 待字闺中
J*v
1
1.给一个String s="{ name:a, children:[{name:aa, children:[{children:[{name:
aaaa}], name:aaa}, {name:aab}]}, {name:ab}]}"; 返回下面这样的树状结构:
a
/
aa ab
/
aaa aab
/
aaaa
avatar
J*v
2
方法应该是stack + 状态机
但case太多了
avatar
L*e
3
还好吧。相当于一个简化版json parser而json parser本身逻辑就很简单,code差不多
这样
def read_object():
read_start_object()
while (cursor.value != '}'):
field = read_field_name():

if field == 'name':
read_string_value()
elif field == 'children':
read_array()

read_end_object()
def read_array():
read_start_array()
while (cursor.value != ']'):
read_object()
read_end_array()
def read_field_name():
name = read_string_value()
read_colon()
return name
def read_string_value():
stop_chars = [' ', '[', ']', '{', '}', ':']
ret = ''
while cursor.value not in stop_chars:
ret += cursor.value
cursor.next()

# skip_white_space
return ret
def read_start_object():
assert cursor.value == '{'
cursor.move
# skip_white_space
avatar
J*v
4
java的怎么写?

【在 L********e 的大作中提到】
: 还好吧。相当于一个简化版json parser而json parser本身逻辑就很简单,code差不多
: 这样
: def read_object():
: read_start_object()
: while (cursor.value != '}'):
: field = read_field_name():
:
: if field == 'name':
: read_string_value()
: elif field == 'children':

avatar
c*t
5
deserialize tree?应该不用stack 用dfs也行,只管"name:val" 和“]"

【在 J*****v 的大作中提到】
: 1.给一个String s="{ name:a, children:[{name:aa, children:[{children:[{name:
: aaaa}], name:aaa}, {name:aab}]}, {name:ab}]}"; 返回下面这样的树状结构:
: a
: /
: aa ab
: /
: aaa aab
: /
: aaaa

avatar
J*v
6
不同于deserialize tree, 因为里面没标null的情况,写法也很不同

【在 c********t 的大作中提到】
: deserialize tree?应该不用stack 用dfs也行,只管"name:val" 和“]"
avatar
z*6
7
dfs没跑了,类似于bst的insert或build tree
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。