Advertisement
K_S_

Untitled

Nov 9th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.56 KB | None | 0 0
  1. class Solution {
  2.     public String[] reorderLogFiles(String[] log) {
  3.  
  4.         List<Word> words = new ArrayList<>();
  5.         for (String alog : log) {
  6.             Word word = parseLog(alog);
  7.             words.add(word);
  8.         }
  9.  
  10.         words.sort((w1, w2) -> {
  11.             if (w1.isDigit) {
  12.                 if (w2.isDigit) {
  13.                     return 0;
  14.                 } else {
  15.                     return 1;
  16.                 }
  17.             } else {
  18.                 if (w2.isDigit) {
  19.                     return -1;
  20.                 } else {
  21.                     int o = w1.letters.compareTo(w2.letters);
  22.                     if (o == 0) {
  23.                         return w1.id.compareTo(w2.id);
  24.                     }
  25.                     return o;
  26.  
  27.                 }
  28.             }
  29.  
  30.         });
  31.  
  32.         String[] result = new String[log.length];
  33.         int i = 0;
  34.         for (Word word : words) {
  35.             String s = word.id + word.letters;
  36.             result[i++] = s;
  37.         }
  38.         return result;
  39.     }
  40.  
  41.     private Word parseLog(String s) {
  42.         Word word = new Word();
  43.         String[] split = s.split(" ");
  44.         String id = split[0];
  45.  
  46.         char ch = split[1].charAt(0);
  47.         boolean isDigit = Character.isDigit(ch);
  48.  
  49.  
  50.         int i = s.indexOf(" ");
  51.         String letters = s.substring(i);
  52.        
  53.         word.id = id;
  54.         word.isDigit = isDigit;
  55.         word.letters = letters;
  56.         return word;
  57.     }
  58.  
  59.     static class Word {
  60.         String id;
  61.         String letters;
  62.         boolean isDigit;
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement