• CodeForces


    题意

    https://vjudge.net/problem/CodeForces-158C

    你需要实现类似 Unix / Linux 下的 cd 和 pwd 命令。

    一开始,用户处于根目录 / 下。

    对于 cd 命令,它的作用是跳转到某个路径。路径有相对路径和绝对路径,相对路径以文件夹名开头,表示当前目录下的文件夹,绝对路径以 / 开头,表示根目录下的文件夹。同时,.. 文件夹表示上一层文件夹。

    对于 pwd 命令,你需要输出当前所在的绝对路径。

    保证输入数据中所有的文件夹都存在。

    思路

    用栈记录每次往下搜索的文件夹,先对cd后面的字符串加一个"/",每次遇到../就退回上一级目录(pop)。

    具体看代码。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    #define ll long long
    const int N = 200005;
    const int mod = 1e9 + 7;
    #define lowbit(x) (x & (-x))
    int main()
    {
        std::ios::sync_with_stdio(false);
        int n;
        cin >> n;
        stack<string> st, st2;
        while (n--)
        {
            string s;
            cin >> s;
            if (s[0] == 'p')
            {
                cout << "/";
                while (!st.empty())
                {
                    st2.push(st.top());
                    st.pop();
                }
                while (!st2.empty())
                {
                    st.push(st2.top());
                    cout << st2.top();
                    st2.pop();
                }
                cout << endl;
            }
            else
            {
                string cur = "";
                cin >> s;
                s += '/';
                int l = s.length();
                for (int i = 0; i < l; i++)
                {
                    cur += s[i];
                    if (s[i] == '/')
                    {
                        if (cur == "/")
                        {
                            while (!st.empty())
                                st.pop();
                        }
                        else if (cur == "../")
                        {
                            st.pop();
                        }
                        else
                        {
                            st.push(cur);
                        }
                        cur = "";
                    }
                }
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    马走日
    扩号匹配问题
    八皇后
    流感传染
    迷宫
    棋盘问题
    JAVA-初步认识-第二章-字符类型的运算续
    JAVA-初步认识-第二章-算术运算符1知识点整理
    JAVA-初步认识-第二章-算术运算符1
    JAVA-初步认识-第二章-类型运算细节
  • 原文地址:https://www.cnblogs.com/mcq1999/p/12028083.html
Copyright © 2020-2023  润新知