面试题不同公司不一样像百度公司要求算法高这个也能理解了,下面整理了一道据说是百度的面试题,我们来看看它的算法与答案吧。
据说是一个百度php的面试题,已给定一个数组:
$arr
=
array
(‘b’=>’a’, ‘c’=>’a’, ‘e’=>’b’, ‘d’=>’b’, ‘f’=>’c’, ‘g’=>’e’, ‘h’=>’f’);
写一个算法,完成到以下格式的转换:
array
(
'a'
=>
array
(
'b'
=>
array
(
'e'
=>
array
(
[0] =>
'g'
,
),
[0] =>
'd'
,
),
'c'
=>
array
(
'f'
=>
array
(
[0] =>
'h'
,
),
),
),
)
这个结构应该属于一种Trie树。当时在写的时候由于没发现array_keys()函数第二个参数(汗一个先),于是写了以下这个方法来
虽然有点儿奇葩,至少还是实现了。以下是某网友使用array_keys()的另一解法:
function
_array_keys(
$k
,
$arr
) {
$return
=
array
();
if
(
$ret
=
array_keys
(
$arr
,
$k
)) {
<a href=
"/tags.php/foreach/"
target=
"_blank"
>
foreach
</a>(
$ret
as
$v
) {
if
(
$t
= _array_keys(
$v
,
$arr
)) {
$return
[
$v
] =
$t
;
}
else
{
$return
[] =
$v
;
}
}
}
return
$return
;
}