常见算法

  function getRelativePath($a, $b) {
        $relativePath = "";
        $pathA = explode('/', dirname($a));
        $pathB = explode('/', dirname($b));
        $n = 0;
        $len = count($pathB) > count($pathA) ? count($pathA) : count($pathB);
        for ($n = 0; $n < $len; $n++) {
            if ( $n >= $len || $pathA[$n] != $pathB[$n] ) {
                echo $n ;
                break;
            }
        }
        $relativePath .= str_repeat('../', count($pathB) - $n);
        $relativePath .= implode('/', array_splice($pathA, $n));
        return $relativePath;
    }


    function StrToInt($str)
    {
        // write code here
        $tem = array('1','2','3','4','5','6','7','8','9','0');
        $len = strlen($str);
        if($len == 0)return 0;
        $arr = str_split($str);
        $sum = 0;
        for ($i =0; $i <count($arr); $i++) {
            $sum = $sum*10 + $arr[$i];
        }

        $fuhao = 0;
        if($arr[0] == '-'){
            $fuhao = 1;
        }
        $sum = 0;
        for($i = $fuhao; $i<$len; $i++){
            if($arr[$i] == '+'){
                continue;
            }
            if(!in_array($arr[$i],$tem)){
                return 0;
            }
            $sum = $sum*10 + $arr[$i];
        }
        return $fuhao == 0 ? $sum : -1*$sum;

    }
  1. //二分查找递归实现  
  2. function binSearch2($arr,$low,$height,$k){  
  3.     if($low<=$height){  
  4.         $mid=floor(($low+$height)/2);//获取中间数  
  5.         if($arr[$mid]==$k){  
  6.             return $mid;  
  7.         }elseif($arr[$mid]<$k){  
  8.             return binSearch2($arr,$mid+1,$height,$k);  
  9.         }elseif($arr[$mid]>$k){  
  10.             return binSearch2($arr,$low,$mid-1,$k);  
  11.         }  
  12.     }  
  13.     return -1;  

    function string_fz($string){
        $len = strlen($string);
        $mid = floor($len/2);
        for($i=0; $i<$mid; $i++){
            $temp =  $string[$i] ;
            $string[$i] = $string[$len-$i-1];
            $string[$len-$i-1] =$temp;
        }
         return $string;
    }




    //指定数组以$keys键值排序
    function array_sort1($array,$keys,$type='asc'){
        $keysvalue = $new_array = array();
        foreach ($array as $k=>$v){
            $keysvalue[$k] = $v[$keys];
        }
        if($type == 'asc'){
            asort($keysvalue);
        }else{
            arsort($keysvalue);
        }
        reset($keysvalue);
        foreach ($keysvalue as $k=>$v){
            $new_array[$k] = $array[$k];
        }
        return $new_array;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值