#include <string>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param path string字符串 
     * @return string字符串
     */
    string simplifyPath(string path) {
        stack<string> stk;
        path.push_back('/');    
        //  '/'是处理前面累积的字符串的标志,可能有最后没有/的情况,确保最后一个部分被处理;

        string temp = "";
        for(char c:path){
            if(c == '/'){
                if(temp == "" || temp == "."){
                }else if(temp == ".."){
                    if(!stk.empty())stk.pop();
                }else{
                    stk.push(temp);   //只添加文本中间的字母,题目意思相当于只保留有文字的段
                }
                temp = "";
            }else{
                temp = temp + c;
            }
        } //一定是以/结尾;

        
        if(stk.empty()) return "/";

        string ans = "";  //  “/abc”表示一组;
        while(!stk.empty()){
            ans = "/" + stk.top() + ans; //拼接
            stk.pop();
        }

        return ans;
    }
};