这是一道 普及+/提高的题,说起洛谷的题对于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()); } } }