首页 > 试题广场 >

mkdir

[编程题]mkdir
  • 热度指数:2936 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/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”命令。

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

输入

3
/a
/a/b
/a/b/c
3
/usr/local/bin
/usr/bin
/usr/local/share/bin

输出

mkdir -p /a/b/c

mkdir -p /usr/bin
mkdir -p /usr/local/bin
mkdir -p /usr/local/share/bin
import java.util.*;

public class Main{
    public  static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int n = scan.nextInt();
            String[] path = new String[n];
            for(int i = 0; i < n; i++){
                path[i] = scan.next();
            }
            Arrays.sort(path);
            boolean[] flag = new boolean[n];
            for(int i = 0; i < n-1; i++){
                if(path[i].equals(path[i+1])){
                    flag[i] = true;
                }
                if(path[i].length() < path[i+1].length() && path[i+1].contains(path[i]) && path[i+1].charAt(path[i].length()) == '/'){
                    flag[i] = true;
                }
            }
            
            for(int i = 0; i < n; i++){
                if(!flag[i]){
                    System.out.println("mkdir -p " + path[i]);
                }
            }
            System.out.println();
        }
    }
}

发表于 2023-03-09 21:03:07 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            String[] arr = new String[n];
            for(int i = 0;i < n;i++){
                arr[i] = sc.next();
            }
            Arrays.sort(arr);
            boolean[] flg = new boolean[n];
            for(int i = 0;i < arr.length - 1;i++){
                if(arr[i].equals(arr[i + 1])){
                    flg[i] = true;
                }else if(arr[i].length() < arr[i+1].length() && arr[i+1].contains(arr[i]) && arr[i+1].charAt(arr[i].length()) == '/'){
                    flg[i] = true;
                }
            }
            
            for(int i = 0;i < n;i++){
                if(!flg[i]){
                  System.out.println("mkdir -p "+arr[i]);
                }
            }
               System.out.println();
        }
    }
}

发表于 2022-05-29 19:32:38 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = Integer.parseInt(sc.nextLine());
            String[] str = new String[n];
            for(int i = 0; i < n; i++){
                str[i] = sc.nextLine();
            }
            // 排序以达到按照字典顺序
            Arrays.sort(str);
            for(int i = 1; i < n; i++){
                // 排完序后最接近的字符串就会相邻
                // 若后者是在前者的路径之后延伸(即为/a/ab和/a/ab/abc的关系)
                // 就将前者变为""以便后续打印时判断,需要注意(/a/ab和/a/abc)这种情况
                if(str[i].contains(str[i-1]) && str[i].charAt(str[i-1].length()) == '/'){
                    str[i-1] = "";
                }
            }
            for(int i = 0; i < n; i++){
                if(!"".equals(str[i])){
                    System.out.println("mkdir -p "+str[i]);
                }
            }
            System.out.println();
        }
    }
}

编辑于 2021-07-26 14:32:47 回复(0)
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			int n = sc.nextInt();
			String[] arr = new String[n];
			for (int i = 0; i < arr.length; i ++ ) {
				arr[i] = sc.next();
			}
			Arrays.sort(arr);
			List<String> res = new ArrayList<>();
			for (int i = 1; i < arr.length; i ++ ) {
				if( ! arr[i].startsWith(arr[i - 1] + "/")) res.add(arr[i - 1]);
			}
			res.add(arr[n - 1]);
			for (String s:res) {
				System.out.println("mkdir -p " + s);
			}
			System.out.println();
		}
	}
}

编辑于 2016-10-13 21:00:57 回复(0)

问题信息

难度:
4条回答 10330浏览

热门推荐

通过挑战的用户

查看代码