Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public String[] reorderLogFiles(String[] logs) {
- int right = logs.length - 1;
- for (int index = right; index >= 0; index--) {
- String log = logs[index];
- if (isNumber(log.charAt(log.indexOf(" ") + 1))) {
- swap(logs, index, right);
- right--;
- }
- }
- sortWords(logs, 0, right);
- return logs;
- }
- private void sortWords(String[] logs, int start, int end) {
- if (start > end)
- return;
- int left = start;
- int right = end;
- int pivote = end;
- while (left < right) {
- while (left < right && compare(logs[left], logs[pivote]) < 0)
- left++;
- while (left < right && compare(logs[right], logs[pivote]) >= 0)
- right--;
- if (left < right) {
- swap(logs, left, right);
- }
- }
- swap(logs, right, pivote);
- sortWords(logs, start, right - 1);
- sortWords(logs, left + 1, end);
- }
- private int compare(String log1, String log2) {
- String str1 = log1.substring(log1.indexOf(" ") + 1);
- String str2 = log2.substring(log2.indexOf(" ") + 1);
- int val = str1.compareTo(str2);
- if (val == 0) {
- return log1.compareTo(log2);
- }
- return val;
- }
- private void swap(String[] logs, int index, int right) {
- String tmp = logs[index];
- logs[index] = logs[right];
- logs[right] = tmp;
- }
- private boolean isNumber(char charAt) {
- return charAt >= '0' && charAt <= '9';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement