Я чувствую, что это можно решить с помощью подстроки, т.е. вы ищете строку, которая не является подстрокой какой-либо другой строки.
Вот решение в java, вы можно использовать те же логи c в python.
public static void findFullyQualifiedPaths() {
List<String> paths = new ArrayList<>();
paths.add("private");
paths.add("private/etc");
paths.add("private/etc/pam.d");
paths.add("usr");
paths.add("usr/local");
paths.add("usr/local/lib");
paths.add("usr/local/lib/security");
System.out.println("Input Paths");
System.out.println(paths);
List<String> filteredPaths = new ArrayList<String>(paths);
filteredPaths.removeIf(currentPath -> {
for (String path : paths) {
if ((!path.equals(currentPath)) && path.contains(currentPath)) {
return true;
}
}
return false;
});
System.out.println("Paths after removing the substrings");
System.out.println(filteredPaths);
}
Вывод:
Input Paths
[private, private/etc, private/etc/pam.d, usr, usr/local, usr/local/lib, usr/local/lib/security]
Paths after removing the substrings
[private/etc/pam.d, usr/local/lib/security]