Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. class Solution {
  2. public String[] reorderLogFiles(String[] logs) {
  3. int right = logs.length - 1;
  4. for (int index = right; index >= 0; index--) {
  5. String log = logs[index];
  6. if (isNumber(log.charAt(log.indexOf(" ") + 1))) {
  7. swap(logs, index, right);
  8. right--;
  9. }
  10. }
  11. sortWords(logs, 0, right);
  12. return logs;
  13. }
  14. private void sortWords(String[] logs, int start, int end) {
  15. if (start > end)
  16. return;
  17. int left = start;
  18. int right = end;
  19. int pivote = end;
  20.  
  21. while (left < right) {
  22. while (left < right && compare(logs[left], logs[pivote]) < 0)
  23. left++;
  24. while (left < right && compare(logs[right], logs[pivote]) >= 0)
  25. right--;
  26. if (left < right) {
  27. swap(logs, left, right);
  28. }
  29. }
  30. swap(logs, right, pivote);
  31. sortWords(logs, start, right - 1);
  32. sortWords(logs, left + 1, end);
  33.  
  34. }
  35.  
  36. private int compare(String log1, String log2) {
  37. String str1 = log1.substring(log1.indexOf(" ") + 1);
  38. String str2 = log2.substring(log2.indexOf(" ") + 1);
  39. int val = str1.compareTo(str2);
  40. if (val == 0) {
  41. return log1.compareTo(log2);
  42. }
  43. return val;
  44. }
  45.  
  46. private void swap(String[] logs, int index, int right) {
  47. String tmp = logs[index];
  48. logs[index] = logs[right];
  49. logs[right] = tmp;
  50. }
  51.  
  52. private boolean isNumber(char charAt) {
  53. return charAt >= '0' && charAt <= '9';
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement