面試題不同公司不一樣像百度公司要求算法高這個也能了解了,下面整理了一道據說是百度的面試題,我們來看看它的算法與答案吧。
據說是一個百度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
;
}