文章

25

粉丝

0

获赞

27

访问

1.4k

头像
路径解析 题解:栈
P1710 中国海洋大学机试题
发布于2026年2月20日 20:34
阅读数 54

用的双端队列模拟栈,用数组也可以,只要最后能遍历

#include <bits/stdc++.h>
using namespace std;
int n;
string curPath;//当前路径
string s;

//处理绝对路径并输出
void dealWithAbsolutePathAndPrint(string& s){
    deque<string> dq;//双端队列
    string get_s;//获取每一次拿到的文件名
    int last=0;//上一次斜杠位置
    for(int now=1;now<s.size();now++){
        if(s[now]=='/'){
            get_s=s.substr(last+1,now-last-1);
            if(get_s!=""&&get_s!="."){
                //出队一个文件
                if(get_s==".."){
                    if(!dq.empty())
                        dq.pop_back();
                }
                //入队一个文件
                else
                    dq.push_back(get_s);
            }
            //更新位置
            last=now;
        }
    }
    for(string print_s:dq)
        cout<<'/'<<print_s;
    //仅有根目录
    if(dq.empty())
        cout<<'/';
    cout<<endl;
}

int main(){
    cin>>n;
    cin>>curPath;
    cin.igno...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发