题目描述
给你一串路径,譬如: a\b\c a\d\e b\cst d\ 你把这些路径中蕴含的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右缩一格,就像这样: a b c d e b cst d 同一级的需要按字母顺序排列,不能乱。
输入描述:
每个测试案例第一行为一个正整数n(n<=10)表示有n个路径,当n为0时,测试结束,接下来有n行,每行有一个字串表示一个路径,长度小于50。
输出描述:
输出目录结构,每一个测试样例的输出紧跟一个空行。
示例1
输入
复制
4
a\b\c
a\d\e
b\cst
d\
0
输出
复制
a
b
c
d
e
b
cst
d
import java.util.*;import java.io.*;import java.text.* ;//1.缩进就是2个空格//2.排序意思是优先保证高的级别的顺序//3.“每组样例后有一个空行”publicclassMain{staticint n;staticint m;staticint[][] matrix;staticint res = Integer.MAX_VALUE;publicstaticvoidmain(String[] args){try{
BufferedReader br=newBufferedReader(newInputStreamReader(System.in));
String str;while((str=br.readLine())!= null){int n = Integer.parseInt(str);if(n ==0)break;
String[] strs =newString[n];for(int i =0; i < n; i++){
strs[i]= br.readLine();}
Arrays.parallelSort(strs);
String[] parts1 = strs[0].split("\\\\");int len1 = parts1.length;for(int i =0; i < len1; i++){
StringBuilder s =newStringBuilder();for(int j =0; j < i; j++)
s.append(" ");
s.append(parts1[i]);
System.out.println(s);}for(int k =1; k < n; k++){boolean mark =true;
String[] parts2 = strs[k].split("\\\\");int len2 = parts2.length;for(int i =0; i < len2; i++){if(mark&&i<len2&&parts1[i].contentEquals(parts2[i])){continue;}else mark =false;
StringBuilder s =newStringBuilder();for(int j =0; j < i; j++)
s.append(" ");
s.append(parts2[i]);
System.out.println(s);}
parts1 = Arrays.copyOf(parts2, len2);}}}catch(IOException e){
e.printStackTrace();}}}