LeetCode: Reorder Data in Log Files Posted on February 10, 2020July 26, 2020 by braindenny Reorder Data in Log Files Similar Problems: CheatSheet: LeetCode For Code Interview CheatSheet: Common Code Problems & Follow-ups Tag: #string 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: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"] Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"] Constraints: 0 <= logs.length <= 100 3 <= logs[i].length <= 100 logs[i] is guaranteed to have an identifier, and a word after the identifier. Github: code.dennyzhang.com Credits To: leetcode.com Leave me comments, if you have better ways to solve. Solution: ## https://code.dennyzhang.com/reorder-data-in-log-files ## Basic Ideas: sorting ## ## Complexity: Time O(n*log(n)), Space O(1) class Solution: def reorderLogFiles(self, logs: List[str]) -> List[str]: def getKey(log): l = log.split(" ") if "0"<=l[1][0] <="9": return [1] else: return [0, " ".join(l[1:]), l[0]] return sorted(logs, key=getKey) Post Views: 0