#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; } };