leetcode937. Reorder Log Files
Posted seyjs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode937. Reorder Log Files相关的知识,希望对你有一定的参考价值。
题目如下:
You have an array of
logs
. Each log is a space delimited string of words.For each log, the first word in each log is an alphanumeric identifier. Then, either:
- Each word after the identifier will consist only of lowercase letters, or;
- Each word after the identifier will consist only of digits.
We will call these two varieties of logs letter-logs and digit-logs. It is guaranteed that each log has at least one word after its identifier.
Reorder the logs so that all of the letter-logs come before any digit-log. The letter-logs are ordered lexicographically ignoring identifier, with the identifier used in case of ties. The digit-logs should be put in their original order.
Return the final order of the logs.
Example 1:
Input: ["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"] Output: ["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]
Note:
0 <= logs.length <= 100
3 <= logs[i].length <= 100
logs[i]
is guaranteed to have an identifier, and a word after the identifier.
解题思路:题目实在太简单了,我的方法是创建两个数组letter和digit,接下来遍历logs,如果logs[i]的最后一个字符是数字,存入digit;否则,存入letter。遍历完成后,对letter进行排序,最后返回letter + digit。
随便说说:最近真的是太忙了,基本没有时间做题。
代码如下:
class Solution(object): def reorderLogFiles(self, logs): """ :type logs: List[str] :rtype: List[str] """ letter = [] digit = [] for i in logs: if i[-1].isdigit(): digit.append(i) else: letter.append(i) def cmpf(v1,v2): lv1 = v1.split(‘ ‘) lv2 = v2.split(‘ ‘) for i in range(1,min(len(lv1),len(lv2))): if lv1[i] == lv2[i]: continue return cmp(lv1[i],lv2[i]) return len(lv1) - len(lv2) letter.sort(cmp = cmpf) return letter + digit
以上是关于leetcode937. Reorder Log Files的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 937. Reorder Data in Log Files
[LeetCode] 937. Reorder Data in Log Files
[Leetcode]937. Reorder Log Files给日志文件排序
LeetCode --- 937. Reorder Data in Log Files 解题报告