牛客链接
题目
工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/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();
}
}
}