-
发表于 2024.05.27
-
简单的字符串处理题,首先按第一个空格分割每个日志,取出标识符和内容,然后检查内容是否全为数字或空格判断是否为数字日志:如果是,则按序加入到数字日志列表中,否则,加入
(内容, 日志全文)
到字母日志列表中(如果内容相同,进而比对日志全文,实际上就是在比对标识符了,没必要单独放标识符在元组里面)。最后,对字母日志列表进行排序,然后按序取出日志全文并追加数字日志组成即可。官解的答案也非常简洁:自定义排序逻辑(直接编写排序函数里面的
key
逻辑即可),每个元素用于比较的信息为(0,内容,标识符)
(如果是字母日志)或(1,)
(如果是数字日志),由于是稳定排序,所以数字日志的顺序不会被打乱。class Solution: def reorderLogFiles(self, logs: List[str]) -> List[str]: letter_logs = [] digit_logs = [] for log in logs: identifier, content = log.split(' ', 1) is_digit = True for ch in content: if ch == ' ': continue if not ch.isdigit(): is_digit = False break if is_digit: digit_logs.append(log) else: letter_logs.append((content, log)) # 如果内容相同, 进而比对log, 实际上就是在比对标识符了 letter_logs.sort() return [ *(letter_log for _, letter_log in letter_logs), *digit_logs ]
- LC 题目链接
-