思路分析
本题主要是用到string中的各种函数来处理字符串。
find 查找
rfind 反向查找
erase 删除字符串
绝对路径:以 / 符号开头,表示从根目录开始构建的路径。
相对路径:不以 / 符号开头,表示从当前目录开始构建的路径
若输入的是相对路径,则存放路径的字符串前要加上当前路径。
若输入为空,则当前目录就是答案
正规化的几种情况:
(1)遇到多个‘/’,只保留一个。
(2)遇到 ‘/./’,可直接删去。
(3)遇到‘ /…/’, 表示上一级目录,若前面没有了,说明是根目录,直接删去;若前面还有,则需要把前面一个目录也删去。
(4)结尾有‘/’,若只有一个‘/’,是根目录,不删;否则,删去。
因为这题可能输入空字符串,所以要用getline().
AC代码
#include <iostream>
#include <string>
using namespace std;
int main() {
int P;
string cur,str;//cur保存当前目录,s保存之后每个需要正规化的路径
cin>>P>>cur