mkdir(Java)

牛客链接

mdir

题目

工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。
现在给你一些需要创建的文件夹目录,请你帮忙生成相应的“mkdir -p”命令。


输入描述

输入包含多组数据。

每组数据第一行为一个正整数n(1≤n≤1024)。

紧接着n行,每行包含一个待创建的目录名,目录名仅由数字和字母组成,长度不超过200个字符。


输出描述

对应每一组数据,输出相应的、按照字典顺序排序的“mkdir -p”命令。

每组数据之后输出一个空行作为分隔。

解题思路

将每个目录存入字符串数组后进行排序,这样如果是相同根目录将会被排到一起,且子目录更多的字符串将会被排在后面。只需要判断是否包含 前一个字符串+“/” 就可以知道是否是同一个根目录,如果不是,那么就将前一个目录直接存到list数组中准备输出即可,如果是同一个根目录,就继续向后判断。注意输出格式即可。

代码实现

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = Integer.parseInt(scanner.nextLine());
            String[] str = new String[n];
            for (int i = 0;i<n;i++) {
                str[i] = scanner.nextLine();
            }
            Arrays.sort(str);
            List<String> list = new ArrayList<>();
            for (int i = 1;i<n;i++) {
                if (!str[i].startsWith(str[i-1] +"/")) {
                    list.add(str[i-1]);
                }
            }
            list.add(str[n-1]);
            for (int i = 0;i<list.size();i++) {
                System.out.println("mkdir -p " +list.get(i));
            }
       System.out.println();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值