工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/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”命令。
每组数据之后输出一个空行作为分隔。
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(); } } }
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(); } } }
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(); } } }
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(); } } }