天天看點

php程式員面試之百度面試題

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

據說是一個百度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

;

}

繼續閱讀