这是一道 普及+/提高的题,说起洛谷的题对于java选手来说,真的是太不友好,做不来只能去看c/c++的题解。。。。。。一言难尽,为了做一道题真的太难了
传送门:
https://www.luogu.com.cn/problem/P1738
直接上代码:
package algorithm.luogu;
import java.util.*;
/**
* @author 小黎
* @date 2020/10/21 18:39
* @description emmm这道题给我的第一眼就是暴力,然后比较,把后面的每一个都和上一个进行比较,如果后面的文件夹
* 在上一个文件夹里,文件夹用/来分割。
*/
public class P1738 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
int n = scanner.nextInt();
String[] s = new String[n];
List<List<String>> lists =new ArrayList<>();
for (int i=0;i<s.length;i++){
s[i] = scanner.next();
}
//分割字符串,但是第一个分割的时候是""+/+后面的内容
for (int i=0;i<s.length;i++) {
List<String> list =new LinkedList<>();
//获取到s中的字符串
String[] strings=s[i].split("/");
for (int j=1;j<strings.length;j++){
list.add(strings[j]);
}
lists.add(list);
}
//去重
Set<String> set =new HashSet<>();
//分割出来的字符串储存在lists中,并且每一行分割后的字符串储存在里面
//遍历,要判断是否在同一目录下就很难受了
//重新一个一个的拼接字符串,放入set中去重
for (int i=0;i<lists.size();i++){
String father ="";
for (int j=0;j<lists.get(i).size();j++) {
String name = lists.get(i).get(j);
name = name+"_"+father;
father = name;
set.add(father);
}
System.out.println(set.size());
}
}
}