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