Java实现 洛谷 P1738 洛谷的文件夹.docx

上传人:Lun****ng 文档编号:143872861 上传时间:2020-09-02 格式:DOCX 页数:3 大小:11.74KB
返回 下载 相关 举报
Java实现 洛谷 P1738 洛谷的文件夹.docx_第1页
第1页 / 共3页
Java实现 洛谷 P1738 洛谷的文件夹.docx_第2页
第2页 / 共3页
Java实现 洛谷 P1738 洛谷的文件夹.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《Java实现 洛谷 P1738 洛谷的文件夹.docx》由会员分享,可在线阅读,更多相关《Java实现 洛谷 P1738 洛谷的文件夹.docx(3页珍藏版)》请在金锄头文库上搜索。

1、Java实现 洛谷 P1738 洛谷的文件夹题目描述kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现。洛谷的网页端,有很多文件夹,文件夹还套着文件夹。例如:/luogu/application/controller表示根目录下有一个名称为luogu的文件夹,这个文件夹下有一个名称application的文件夹,其中还有名为controller的文件夹。每个路径的第1个字符总是/,且没有两个连续的/,最后的字符不是/。所有名称仅包含数字和小写字母。目前根目录是空的。kkksc03想好了很多应该有的文件夹路径名。问题是,需要是使这些文件夹都存在,需要新建几

2、个文件夹呢?输入输出格式输入格式:输入文件第1行为一个正整数N。接下来N行,每行为一个描述路径的字符串,长度均不超过100。输出格式:输出应包含N行,每行1个正整数,第i行输出若要使第1个路径到第i个路径存在,最少需要新建多少个文件夹。输入样例#1:2/luogu/application/controller/luogu/application/view输出样例#1:34输入样例#2:3/chicken/chicken/egg/chicken输出样例#2:122输入样例#3:4/a/a/b/a/c/b/b输出样例#3:1235import java.util.ArrayList;import

3、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 list = new ArrayList(); ArrayList list1 = new ArrayList(); int n = sc.nextInt(); for (int i = 0; i n; i+) String s = sc.next()

4、; 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(num3i); count+; /先把第一个保存下来 for (int i = 0; i list.si

5、ze()-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.lengthn

6、um2.length) /如果第二个长度大,就先保存一下 temp=num1.length; for (int j = 0; j min; j+) if (num1j.equals(num2j) /第一个相同 if (!list1.contains(num1j) / list1 这里是list1 看看是否有这个文件夹 count+; /这里主要是 看看这两个路径里有几个相同的 防止加上相同的文件夹 list1.add(num1j); /没有就加上这个文件夹 count记录次数 else /如果这两个不相等 temp=j; /就保存下标 结束掉 break; if (temp!=-1) /如果有不相同的 或者第二个数组长的 list1 = new ArrayList(); /list清空 重新录入 for (int j = 0; j =temp) /当录入到下标的地方,就开始添加次数 count+; System.out.println(count);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号