Leetcode-PHP题解D54-937-Reorder-Log-Files

59次阅读

共计 687 个字符,预计需要花费 2 分钟才能阅读完成。

D54 937. Reorder Log Files

题目链接

937. Reorder Log Files

题目分析

给定一个数组,每一个元素是一条“日志”。

每一条日志的第一个部分为一个标识符(ID)。
剩余部分为:
全为小写字母的字符串(称为字符日志)

全为数字的字符串(称为数字日志)。

给定的数组中确定会至少有一个字母。

重新排序这个数组,使得字符日志在前、数字日志在后。
并将字符日志按字母升序排序,数字日志按保持原来的顺序(即,出现的顺序)。

返回排序后的数组。

思路

针对每一条日志:
首先,需要拆分 ID 和日志部分。
判断是字符日志还是数字日志,存入相应数组中。
遍历完成后,对字符日志进行排序。
在其后拼接数字日志数组,并返回即可。

最终代码

<?php
class Solution {

    /**
     * @param String[] $logs
     * @return String[]
     */
    function reorderLogFiles($logs) {$letters = [];
        $digits = [];
        foreach($logs as $log){$values = explode(' ',$log);
            $id = array_shift($values);
            $firstLetter = ord($values[0][0]) - ord('0');
            if($firstLetter>=0 && $firstLetter<=9){$digits[] = $log;
            }
            else{$letters[implode(' ',$values)] = $log;
            }
        }
        ksort($letters);
        return $letters+$digits;
    }
}

若觉得本文章对你有用,欢迎用爱发电资助。

正文完
 0