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,排名第一哦~ 圆圈代表点,每个店有两个指针,一个指向自己兄弟(同级文件夹),另一个指向自己孩子(子文件夹),还有一个保存当前名字. 有点像二叉树 ...
随机推荐
- CF#633 C. Powered Addition 思维
Powered Addition 题意 给出n个数字,现在你可以在第x秒,选择任意数量的下标,让这些位置上的数加上\(2^{x-1}\),问最快需要几秒使得数列变成一个非递减的序列. 思路 让求x的最 ...
- [csu/coj 1632]LCP
题意:求一个串的出现次数超过1次的字串的个数 思路:对于一个后缀,出现在它后面的所有后缀与它的LCP的最大值就是应该增加的答案,当然这里没有考虑去重,但是却转化了问题,使得我们可以用最长公共前缀来统计 ...
- SEO策略之关键词选择的原则
策略就是指为了实现某一个目标而预先制定的能够实施的方案.在制定SEO策略的时候,我们需要了解网站所有的基本情况,同时又要对网站所处的行业的竞争对手有一个准确的数据分析.SEO策略有几个比较突出的属性: ...
- Vue.js-Vue的初体验
我是参考https://www.cnblogs.com/kidney/p/6052935.html 这位大神的 最开始接触vue的时候,是他的input框输入的文字和旁边的span展示的文字同步,当时 ...
- python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary
#python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...
- lrzsz-神一样的上传下载工具
yum list lrzsz rz sz filename
- 最近关于pc 组装总结
1. 平台之争 amd 还是intel 这个时代,intel 的cpu已经领先amd 太多了.工艺上门,虽然amd 的u 一般都不锁倍频,但是oc的代价是要有一块堆料的主板,然后散热要牛逼,好的散热至 ...
- 字符串 kmp算法 codeforce 625B 题解(模板)
题解:kmp算法 代码: #include <iostream>#include <algorithm>#include <cstring>#include < ...
- 王玉兰201771010128《面向对象与程序设计(Java)》第十一周学习总结
一:理论知识部分: (1)集合:集合(Collection或称为容器)是一种包含多个元素并提供对所包含元素操作方法的类,其包含的元素可以由同一类型的对象组成,也可以由不同类型的对象组成. A:集合类的 ...
- UVa 11529
题目大意:见刘汝佳<算法竞赛入门经典——训练指南>P173 解题思路: 先求出对于每一个点,有多少个三角形包含它,把各个点得到的数值加起来的总和除以 C[n][3] 即可得出答案.对于每一 ...