import java.util.ArrayDeque;
import java.util.Collection;
import java.util.Deque;
class Ideone {
public static void main
(String[] args
) { "METRICS.COMPANY.APP1\n" +
"METRICS.COMPANY.APP1.TOTAL.90DAY\n" +
"METRICS.COMPANY.APP1.TOTAL.WEEKLY\n" +
"METRICS.COMPANY.APP1.TOTAL.MONTHLY\n" +
"METRICS.COMPANY.APP2\n" +
"METRICS.COMPANY.APP2.TOTAL.90DAY\n" +
"METRICS.COMPANY.APP2.TOTAL.WEEKLY\n" +
"METRICS.COMPANY.APP2.TOTAL.MONTHLY\n" +
"METRICS.BUSINESS.DECISIONS\n" +
"METRICS.BUSINESS.DECISIONS.MONTHLY\n" +
"METRICS.BUSINESS.DECISIONS.ANNUALLY\n" +
"METRICS.EMPLOYEE\n" +
"METRICS.EMPLOYEE.WEEKLY";
Collection<String> bases = extractBases(input.split("\n"));
}
}
private static Collection
<String
> extractBases
(String[] nodes
) { Deque<String> bases = new ArrayDeque<>();
bases.addFirst(nodes[0]);
for (int i = 1; i < nodes.length; i++) {
if (!nodes[i].contains(bases.peekFirst())) { // if it's not a child
bases.addFirst(nodes[i]);
}
}
return bases;
}
}