给你一串路径,譬如: ac ade bcst d 你把这些路径中蕴含的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右缩一格,就像这样: a b c d e b cst d 同一级的需要按字母顺序排列,不能乱。c++代码实现
时间: 2024-03-06 10:47:22 浏览: 141
好的,以下是用 C++ 实现的代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
void print_directory_structure(const vector<string>& paths) {
unordered_map<string, vector<string>> dir_map;
string root = "";
for (const string& path : paths) {
string curr = "";
for (char c : path) {
if (c == ' ') {
continue;
}
if (c == '/') {
if (!root.empty()) {
dir_map[root].push_back(curr);
}
root = curr;
curr = "";
} else {
curr += c;
}
}
dir_map[root].push_back(curr);
root = "";
}
for (auto& [dir, subdirs] : dir_map) {
sort(subdirs.begin(), subdirs.end());
cout << dir << endl;
for (const string& subdir : subdirs) {
cout << " ";
cout << subdir << endl;
}
}
}
int main() {
vector<string> paths = {"a/c/d", "a/de/b/cst/d", "a/de/b/e"};
print_directory_structure(paths);
return 0;
}
```
该代码使用了一个哈希表 `dir_map` 来存储目录结构,其中键为目录名,值为该目录下的子目录名。代码首先遍历所有路径,将每个路径分解为目录和子目录,然后将这些信息存储到 `dir_map` 中。最后,按照字母顺序打印出所有目录和子目录。
阅读全文