题目链接:
题目描述:
给定一个文档(Unix-style)的完全路径,请进行路径简化。
题目分析:
∑(っ °Д °;)っ一开始没懂题啊,咋简化啊。
最后查了才知道。
路径简化的依据是:
当遇到“/../”则需要返回上级目录,需检查上级目录是否为空。
当遇到”/./”则表示是本级目录,无需做任何特殊操作。
当遇到”//”则表示是本级目录,无需做任何操作。
当遇到其他字符则表示是文件夹名,无需简化。
当字符串是空或者遇到”/../”,则需要返回一个”/”。
当遇见”/a//b”,则需要简化为”/a/b”。
将字符串依”/”分割出来,然后检查每个分割出来的字符串。栈的应用。
当字符串为空或为“.”不操作;
当字符串为”..”,出栈,即为返回上级目录。
当字符串为其他,入栈。
最后再整理一下,即为简化目录。
代码:
class Solution {
public:
string simplifyPath(string path) {
stack<string> s;
string cur="";
path+='/';
int len=path.size();
for(int i=0;i<len;i++){
if(path[i]=='/'){
if(cur==".."){
if(!s.empty()){
s.pop();
}
}
else if(cur=="."){
}
else{
if(cur!=""){
s.push(cur);
}
}
cur="";
}
else{
cur+=path[i];
}
}
string result="";
if(s.empty()){
return "/";
}
while(!s.empty()){
result="/"+s.top()+result;
s.pop();
}
return result;
}
};