面试题不同公司不一样像百度公司要求算法高这个也能理解了,下面整理了一道据说是百度的面试题,我们来看看它的算法与答案吧。

据说是一个百度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 ;
 
}