美文网首页Leetcode题解-PHP版
Leetcode PHP题解--D54 937. Reorder

Leetcode PHP题解--D54 937. Reorder

作者: skys215 | 来源:发表于2019-05-07 10:00 被阅读0次

    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;
        }
    }
    

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

    相关文章

      网友评论

        本文标题:Leetcode PHP题解--D54 937. Reorder

        本文链接:https://www.haomeiwen.com/subject/cxwsoqtx.html