您的位置:首页 > 其它

leetcode || 71、Simplify Path

2015-04-09 09:04 302 查看
problem:

Given an absolute path for a file (Unix-style), simplify it.
For example,

path =
"/home/"
, =>
"/home"


path =
"/a/./b/../../c/"
, =>
"/c"


click to show corner cases.
Corner Cases:

Did you consider the case where path =
"/../"
?

In this case, you should return
"/"
.
Another corner case is the path might contain multiple slashes
'/'
together,
such as
"/home//foo/"
.

In this case, you should ignore redundant slashes and return
"/home/foo"
.

Hide Tags
Stack String

题意:简化Unix风格路径

thinking:

提示使用stack来做

code:

class Solution {
public:
string simplifyPath(string path) {
stack<string> s;
string str;
for(int i = 0; i < path.size(); i++)
{
if (path[i] == '/')
{
if (str == "..")
{
if (!s.empty())
s.pop();
}
else if (str != "." && str != "")
{
s.push(str);
}

str = "";
}
else
{
str += path[i];
}
}

if (str == "..")
{
if (!s.empty())
s.pop();
}
else if (str != "." && str != "")
s.push(str);

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

string ret;
while(!s.empty())
{
ret = "/" + s.top() + ret;
s.pop();
}

return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: