J*****v 发帖数: 314 | 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 |
J*****v 发帖数: 314 | 2 方法应该是stack + 状态机
但case太多了 |
L********e 发帖数: 159 | 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 |
J*****v 发帖数: 314 | 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':
|
c********t 发帖数: 5706 | 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
|
J*****v 发帖数: 314 | 6 不同于deserialize tree, 因为里面没标null的情况,写法也很不同
【在 c********t 的大作中提到】 : deserialize tree?应该不用stack 用dfs也行,只管"name:val" 和“]"
|
z*****6 发帖数: 16 | 7 dfs没跑了,类似于bst的insert或build tree |