fork download
  1. import java.util.ArrayDeque;
  2. import java.util.Collection;
  3. import java.util.Deque;
  4.  
  5. class Ideone {
  6.  
  7. public static void main(String[] args) {
  8. String input =
  9. "METRICS.COMPANY.APP1\n" +
  10. "METRICS.COMPANY.APP1.TOTAL.90DAY\n" +
  11. "METRICS.COMPANY.APP1.TOTAL.WEEKLY\n" +
  12. "METRICS.COMPANY.APP1.TOTAL.MONTHLY\n" +
  13. "METRICS.COMPANY.APP2\n" +
  14. "METRICS.COMPANY.APP2.TOTAL.90DAY\n" +
  15. "METRICS.COMPANY.APP2.TOTAL.WEEKLY\n" +
  16. "METRICS.COMPANY.APP2.TOTAL.MONTHLY\n" +
  17. "METRICS.BUSINESS.DECISIONS\n" +
  18. "METRICS.BUSINESS.DECISIONS.MONTHLY\n" +
  19. "METRICS.BUSINESS.DECISIONS.ANNUALLY\n" +
  20. "METRICS.EMPLOYEE\n" +
  21. "METRICS.EMPLOYEE.WEEKLY";
  22.  
  23. Collection<String> bases = extractBases(input.split("\n"));
  24. for (String base : bases) {
  25. System.out.println(base);
  26. }
  27. }
  28.  
  29. private static Collection<String> extractBases(String[] nodes) {
  30. Deque<String> bases = new ArrayDeque<>();
  31. bases.addFirst(nodes[0]);
  32.  
  33. for (int i = 1; i < nodes.length; i++) {
  34. if (!nodes[i].contains(bases.peekFirst())) { // if it's not a child
  35. bases.addFirst(nodes[i]);
  36. }
  37. }
  38.  
  39. return bases;
  40. }
  41.  
  42. }
  43.  
Success #stdin #stdout 0.12s 320576KB
stdin
Standard input is empty
stdout
METRICS.EMPLOYEE
METRICS.BUSINESS.DECISIONS
METRICS.COMPANY.APP2
METRICS.COMPANY.APP1