题解 | #路径打印#

路径打印

https://www.nowcoder.com/practice/64b472c9bed247b586859978d13145ad

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

const int N = 11;
vector<string> vec[N];
string str;
int n;


int main(){
   
    while(cin >> n && n != 0){
        
        for (int i = 0; i < n; i ++) {
            vec[i].clear();
            cin >> str;
            string temp;
            for(int j = 0; j < str.size(); j ++){//将每个路径拆分到一个vec[i]中
                while (j < str.size() && str[j] != '\\') {
                    temp += str[j ++];
                }
                vec[i].push_back(temp);
                temp.clear();
            }
        }

        sort(vec, vec + n); //对n个路径,按第一个结点的首字母排序

        for(int i = 0; i < n; i ++){
            if (i == 0) {//第一个路径直接输出
                for (int j = 0; j < vec[i].size(); j ++) {
                    for (int k = 0; k < j; k ++) {//每个结点前的空格数
                        cout << "  ";
                    }
                    cout << vec[i][j] << endl;
                }
            }else{//后面的路径需要判断其与上一个路径相同的父目录
                int k = 0;//记录相同的父目录下标
                while(k < vec[i].size() && k < vec[i - 1].size() && vec[i][k] == vec[i - 1][k])
                    k ++;
                for (int j = k; j < vec[i].size(); j ++) {
                    for(int l = 0; l < j; l ++)
                        cout << "  ";
                    cout << vec[i][j] << endl;
                }

            }
        }
        cout << endl;//每一个测试样例的输出都多一个空行
    }
    return 0;
}

全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
11-08 10:39
门头沟学院 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务