937. Reorder Data in Log Files
Description
You are given an array of logs
. Each log is a space-delimited string of words, where the first word is the identifier.
There are two types of logs:
Letter-logs: All words (except the identifier) consist of lowercase English letters. Digit-logs: All words (except the identifier) consist of digits. Reorder these logs so that:
The letter-logs come before all digit-logs. The letter-logs are sorted lexicographically by their contents. If their contents are the same, then sort them lexicographically by their identifiers. The digit-logs maintain their relative ordering. Return the final order of the logs.
참고
You can read the full description here.
Solution
Approach
- Identifier(alphabet + number) + nums only or chars only
- To check whether it is a number, use string.isdigit
- Seperate with letters[], digits[]
- Sort letters only
Implementation
from typing import List
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letters, digits = [], []
for log in logs:
# the first value(except for identifier) is important.
if log.split()[1].isdigit():
digits.append(log)
else:
letters.append(log)
letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
return letters + digits
Complexity Analysis
- : length of
logs
- Time Complexity:
- Space Complexity: