Reorder Data in Log Files - Problem

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:

  1. The letter-logs come before all digit-logs.
  2. The letter-logs are sorted lexicographically by their contents. If their contents are the same, then sort them lexicographically by their identifiers.
  3. The digit-logs maintain their relative ordering.

Return the final order of the logs.

Input & Output

Example 1 — Mixed Log Types
$ 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"]
💡 Note: Letter-logs come first, sorted by content: "art can" < "art zero" < "own kit dig". Digit-logs maintain original order.
Example 2 — Same Content Different IDs
$ Input: logs = ["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: Letter-logs: "act car" < "act zoo" < "off key dog". For same content "act", sort by identifier: "g1" < "a8".
Example 3 — Only Digit Logs
$ Input: logs = ["dig1 8 1 5 1","dig2 3 6","dig3 1 9"]
Output: ["dig1 8 1 5 1","dig2 3 6","dig3 1 9"]
💡 Note: All digit-logs maintain their original relative ordering.

Constraints

  • 1 ≤ logs.length ≤ 100
  • 3 ≤ logs[i].length ≤ 100
  • All tokens of logs[i] are separated by a single space
  • logs[i] is guaranteed to have an identifier and at least one word after the identifier

Visualization

Tap to expand
Reorder Data in Log Files: Sorting Different Log TypesInput:let1 art candig1 8 1 5 1let2 own kitdig2 3 6let3 art zeroLetter-logs (sort by content)Digit-logs (keep order)let1 art canlet3 art zerolet2 own kitdig1 8 1 5 1dig2 3 6Output:let1 art canlet3 art zerolet2 own kitdig1 8 1 5 1dig2 3 6"art can" < "art zero" < "own kit dig" → Letter-logs sortedDigit-logs maintain original relative positions
Understanding the Visualization
1
Input
Mixed array of letter-logs and digit-logs
2
Process
Sort letter-logs by content+ID, keep digit-logs in order
3
Output
Letter-logs first, then digit-logs
Key Takeaway
🎯 Key Insight: Custom comparator elegantly handles multiple sorting criteria in one pass
Asked in
Amazon 45 Google 12
185.0K Views
Medium Frequency
~15 min Avg. Time
1.6K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen