Java实现 洛谷 P1738 洛谷的文件夹
题目描述
kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现。
洛谷的网页端,有很多文件夹,文件夹还套着文件夹。
例如:/luogu/application/controller表示根目录下有一个名称为luogu的文件夹,这个文件夹下有一个名称application的文件夹,其中还有名为controller的文件夹。
每个路径的第1个字符总是’/’,且没有两个连续的’/’,最后的字符不是’/’。所有名称仅包含数字和小写字母。
目前根目录是空的。kkksc03想好了很多应该有的文件夹路径名。问题是,需要是使这些文件夹都存在,需要新建几个文件夹呢?
输入输出格式
输入格式:
输入文件第1行为一个正整数N。
接下来N行,每行为一个描述路径的字符串,长度均不超过100。
输出格式:
输出应包含N行,每行1个正整数,第i行输出若要使第1个路径到第i个路径存在,最少需要新建多少个文件夹。
输入样例#1:
2
/luogu/application/controller
/luogu/application/view
输出样例#1:
3
4
输入样例#2:
3
/chicken
/chicken/egg
/chicken
输出样例#2:
1
2
2
输入样例#3:
4
/a
/a/b
/a/c
/b/b
输出样例#3:
1
2
3
5
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class 洛谷的文件夹 {
public static void main(String[] args) {
int count=0; //计算新建文件夹次数
Scanner sc =new Scanner(System.in);
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list1 = new ArrayList<String>();
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String s = sc.next();
list.add(s); //把每一个路径都保存为String放入list里面
}
Collections.sort(list); //把这些路径按照字典序排序
//排完序就会把相同路径或者相似路径的放在一起 可以比对这一个和下一个的不同来计算
//不用再去记录以前建过的文件夹
String sss = list.get(0);
String [] num3 = sss.substring(1).split("/");
for (int i = 0; i < num3.length; i++) {
list1.add(num3[i]);
count++;
} //先把第一个保存下来
for (int i = 0; i <list.size()-1; i++) {
System.out.println(count);
String s = list.get(i);
String ss = list.get(i+1);
String [] num1 = s.substring(1).split("/"); //这里是为了拆分使用,来匹配相对位置的文件夹是不是被建过
String [] num2 = ss.substring(1).split("/");
int min = Math.min(num1.length, num2.length);//保存最小长度的
int temp=-1; //这里是用第一个当基础来与第二个的比较
if(num1.length<num2.length){ //如果第二个长度大,就先保存一下
temp=num1.length;
}
for (int j = 0; j < min; j++) {
if (num1[j].equals(num2[j])) { //第一个相同
if (!list1.contains(num1[j])) { // list1 这里是list1 看看是否有这个文件夹
count++; //这里主要是 看看这两个路径里有几个相同的 防止加上相同的文件夹
list1.add(num1[j]); //没有就加上这个文件夹 count记录次数
}
}
else { //如果这两个不相等
temp=j; //就保存下标 结束掉
break;
}
}
if (temp!=-1) { //如果有不相同的 或者第二个数组长的
list1 = new ArrayList<String>(); //list清空 重新录入
for (int j = 0; j < num2.length; j++) { //前面第一个已经录好了 这里录入第二个
list1.add(num2[j]);
if(j>=temp){ //当录入到下标的地方,就开始添加次数
count++;
}
}
}
}
System.out.println(count);
}
}
Java实现 洛谷 P1738 洛谷的文件夹的更多相关文章
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
- Java中的JAR/EAR/WAR包的文件夹结构说明(转)
JAR包:打成JAR包的代码,一般作为工具类,在项目中,会应用到N多JAR工具包. WAR包:JAVA WEB工程,都是打成WAR包,进行发布,如果我们的服务器选择TOMCAT等轻量级服务器,一般就打 ...
- 洛谷P1738 洛谷的文件夹
原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...
- Java生成文件夹
Java生成文件夹 1.说明 判断文件夹是否存在,如果不存在就创建该文件夹,并打印其路径:如果存在,打印其路径 2.实现源码 /** * @Title:BuildFolder.java * @Pack ...
- Java NIO.2 使用Files类遍历文件夹
在以前的Java版本中,如果要遍历某个文件夹下所有的子文件.子文件夹,需要我们自己写递归,很麻烦. 在Java7以后,我们可以NIO.2中的Files工具类来遍历某个文件夹(会自动递归). 大致用法: ...
- java删除文件夹及子目录
package test; import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; ...
- 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...
- 2021.08.05 P1738 洛谷的文件夹(树形结构)
2021.08.05 P1738 洛谷的文件夹(树形结构) P1738 洛谷的文件夹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树!! 题意: 给出n个网页路径,求 ...
- Luogu P1738 洛谷的文件夹
P1738 Luogu 发一个链表题解! 仅有24ms,排名第一哦~ 圆圈代表点,每个店有两个指针,一个指向自己兄弟(同级文件夹),另一个指向自己孩子(子文件夹),还有一个保存当前名字. 有点像二叉树 ...
随机推荐
- 这一份MySQL书单,可以帮你搞定90%以上的面试题!
- Vuser发生器
一.脚本开发过程: 1.计划:收集测试信息,整理业务逻辑,制定测试计划 2.录制脚本: 新建脚本---选择脚本协议(单协议脚本:多协议脚本:最近使用过协议)选择协议---开始录制脚本 脚本录制时,Vu ...
- 使用better-scroll在vue中封装自己的Scroll组件
1. better-scroll 原理 用一张图感受: 绿色部分为 wrapper,也就是父容器,它会有固定的高度.黄色部分为 content,它是父容器的第一个子元素,它的高度会随着内容的大小而撑高 ...
- 程序员的踩坑经验总结(一):如何把Bug的偶现变必现
程序员的踩过的坑也是可以分类的,很常见又很难解决的一类是偶然的现象,表现起来比较怪异. 而把一个问题Bug的偶现变成必现,是开发人员的一种能力.我认为也应该是测试人员的一种能力,但是各个公司要求不一样 ...
- Oracle百万数据查询语句
SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT id, name, age, birthDate, sex, describe, city, cre ...
- DRF视图组件
DRF视图组件: CVB模式继承----五层 from django.views import View # Django的View from rest_framework.views import ...
- C# 操作Orcle数据库
1.首先添加NuGet:Oracle.ManagedDataAccess 2.配置连接数据库字符串:Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(H ...
- 导出word excel 方法
---导出excel public static void DataTableToExcelXjd(DataTable dt, string Title, string TmpColsName) { ...
- 使用flask实现简单的文件上传
from flask import Flask, redirect, render_template, request, url_forfrom werkzeug.utils import secur ...
- Kivy中显示汉字的问题
1. kivy中显示中文乱码和提示错误的原因: 编码问题 字体问题 2. 字体问题的解决 可以下载支持中文的字体文件ttf,我这里使用了微软雅黑中文简体msyh.ttf.我们在编写布局时可以直接在相关 ...