zoukankan      html  css  js  c++  java
  • 一维数字数组,拼接获取最大数字

    <?php
    // 要求: 给定一维数字数组,拼接获取最大数字,如  [4345,43,4,98,9]  ===>  9984434543

    $arr = [43,2,12,46,9,98,99,54];
    $newArr = [];
    $arr = array_map('strval',$arr);

    $len = count($arr);

    // 对数组进行排序
    for($i=0;$i<$len;$i++) {
    if(isset($arr[1])) {
    $n = $arr[0];
    $key = 0;
    // 获取最大数
    foreach($arr as $k=>$v) {
    $re = preNum($n,$v);
    if (!$re) {
    $n = $v;
    $key = $k;
    }
    }
    // 销毁已拼接数字
    unset($arr[$key]);
    // 排序: 重置键
    sort($arr);
    // 返回结果
    $newArr[] = $n;
    }elseif(isset($arr[0])) {
    $newArr[] = $arr[0];
    }
    }
    // 将数组进行join
    $res = implode($newArr);
    $res = intval($res);
    var_dump($res); // 结果为99998544643212

    /**
    * 功能: 如果 $n1 应排前,返回true , 否则返回false
    *
    * @param string $n1 数字字符串
    * @param string $n2 数字字符串
    */
    function preNum($n1,$n2) {
    $len1 = strlen($n1);
    $len2 = strlen($n2);

    // 如果位数一样,比较大小即可
    if($len1 == $len2) {
    if ($n1 < $n2) {
    return false;
    }else {
    return true;
    }
    }

    // 如果位数不一样 ,判断位数小的数字和另一个在位数相同情况下的大小
    $min = min($len1,$len2);
    $tmpNum1 = substr($n1,0,$min);
    $tmpNum2 = substr($n2,0,$min);
    if ($tmpNum1 > $tmpNum2) {
    return true;
    }elseif($tmpNum1 < $tmpNum2){
    return false;
    }else {
    // 拼接剩余部分,比较拼接后数字大小
    if ($len1 < $len2) {
    $split2 = substr($n2,$min) . $tmpNum1;
    $split1 = $tmpNum1 . substr($n2,$min);

    if ($split1 >= $split2) {
    return true;
    }
    }else {
    $split2 = substr($n1,$min) . $tmpNum1;
    $split1 = $tmpNum1 . substr($n1,$min);

    if ($split1 < $split2) {
    return true;
    }
    }
    return false;
    }
    }

    var_dump(preNum('4546','45')); // true

  • 相关阅读:
    05Linux系统常用命令
    04Linux系统目录结构
    02Linux文件系统基本结构
    01Linux_BASH基本操作
    [HTML] HTML常用标签及HTML语义化理解
    [Tools] MDN简介及如何使用MDN查找资料
    [HTTP] 初识HTTP
    [Git] Git 入门(常用命令使用)
    [CL](入门)命令行常用命令使用技巧
    IFE_part2_JavaScript_Ajax学习
  • 原文地址:https://www.cnblogs.com/init-007/p/9464879.html
Copyright © 2011-2022 走看看