洛谷P1738 洛谷的文件夹(java)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值