Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public String[] reorderLogFiles(String[] log) {
- List<Word> words = new ArrayList<>();
- for (String alog : log) {
- Word word = parseLog(alog);
- words.add(word);
- }
- words.sort((w1, w2) -> {
- if (w1.isDigit) {
- if (w2.isDigit) {
- return 0;
- } else {
- return 1;
- }
- } else {
- if (w2.isDigit) {
- return -1;
- } else {
- int o = w1.letters.compareTo(w2.letters);
- if (o == 0) {
- return w1.id.compareTo(w2.id);
- }
- return o;
- }
- }
- });
- String[] result = new String[log.length];
- int i = 0;
- for (Word word : words) {
- String s = word.id + word.letters;
- result[i++] = s;
- }
- return result;
- }
- private Word parseLog(String s) {
- Word word = new Word();
- String[] split = s.split(" ");
- String id = split[0];
- char ch = split[1].charAt(0);
- boolean isDigit = Character.isDigit(ch);
- int i = s.indexOf(" ");
- String letters = s.substring(i);
- word.id = id;
- word.isDigit = isDigit;
- word.letters = letters;
- return word;
- }
- static class Word {
- String id;
- String letters;
- boolean isDigit;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement