我想在java中做类似的事情(从字符串列表中提取公共前缀)。其中字符串列表是文件路径
Eg:
List filePaths1 = new ArrayList();
filePaths1.add("/root/test1/asass");
filePaths1.add("/root/test1");
filePaths1.add("/root/test");
filePaths1.add("/root/test/aaa/");
filePaths1.add("/root/test/bbb/ccc");
filePaths1.add("/root/test/fff/");
filePaths1.add("/root/test/eee/asasa/");
filePaths1.add("/root/rahul/e?ee/asasa/");
filePaths1.add("/root/rahul/asasa/");
filePaths1.add("/root/rahul/no*tthis/asasa/**");
filePaths1.add("/etc/rahul/test");
如果我们将上面的列表传递给它,想要实现一个将返回以下字符串列表的函数。
{"/root/test1", "/root/test", "/root/rahul", "/etc/rahul/test"}
它应该将每个字符串与另一个字符串进行比较,在上述情况下,如果我们考虑 2 个字符串“/root/test1/asass”和“/root/test1”,它的最长公共前缀为 /root/test1,因此我们将其添加到输出列表,如果有任何其他以 /root/test1 开头的字符串,它将由 /root/test1 表示。
在它旁边有五个以 /root/test 开头的字符串,输出列表将包含 /root/test,因为这 5 个字符串的最长公共前缀为“/root/test”。
同样,只有 1 个字符串具有模式 /etc/rahul/test,它不共享或以定义的任何其他模式开头,因此将按原样添加,
我们可以使用正则表达式来做到这一点吗?任何建议都会非常有帮助。如果需要任何其他信息,请告诉我。