本文主要是介绍每日OJ_牛客_mkdir(排序+模拟),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
牛客_mkdir(排序+模拟)
解析代码
牛客_mkdir(排序+模拟)
mkdir__牛客网
解析代码
题解及代码:
只要按照题面,将前缀字符串路径和相同路径剔除,只mkdir -p最长或者唯一路径就可以解决这 个问题 循环接收每组用例,对于每组用户进行如下操作:
- 对改组用例按照字典顺序排序
- 将改组用例中相等的或者前一个是后一个子串的路径剔除
- 输入结果并换行
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{int n = 0;while (cin >> n){vector<string> path(n);for (int i = 0; i < n; ++i) // 接收所有的路径{cin >> path[i];}sort(path.begin(), path.end()); // 对所有的路径按照字典序列进行排序vector<bool> flag(n, true); // 将所有相等或者前一个是后一个子串的字符剔除掉:使用标记剔除for (int i = 0; i < n - 1; ++i){if (path[i] == path[i + 1]) // 两个字符串相等{flag[i] = false;}if (path[i].size() < path[i + 1].size() &&(path[i + 1].substr(0, path[i].size()) == path[i] && path[i + 1][path[i].size()] == '/')){flag[i] = false; // 前一个字符串是后一个字符串的子串}}for (int i = 0; i < n; ++i) // 输出结果{if (flag[i])cout << "mkdir -p " << path[i] << endl;}cout << endl;}return 0;
}
这篇关于每日OJ_牛客_mkdir(排序+模拟)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!