给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。
始终以斜杠 ‘/’ 开头。
两个目录名之间必须只有一个斜杠 ‘/’ 。
最后一个目录名(如果存在)不能 以 ‘/’ 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘…’)。
// istringstream 和getline一般真想不到
class Solution
{
public:
string simplifyPath(string path)
{
vector<string> vecStr;
istringstream iss(path);
string strBuf;
//以/截iss
while (getline(iss, strBuf, '/'))
{
if (!strBuf.empty() && strBuf != "." && strBuf != "..")
{
//正常路径,加入
vecStr.push_back(strBuf);
}
else if (!vecStr.empty() && strBuf == "..")
{
//.. 上一级目录
vecStr.pop_back();
}
}
if (vecStr.empty())
{
return "/";
}
strBuf.clear();
for (auto str : vecStr)
{
strBuf += "/";
strBuf += str;
}
return strBuf;
}
};