尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

利用栈处理 “..“ 回退目录。

利用栈处理 “..“ 回退目录。 题目本质给一个 Linux 路径/a/./b/../../c/要求输出/ccpp #include iostream #include sstream #include stack #include string using namespace std; string simplifyPath(string path) { stackstring st; string cur; // 用 / 分割路径 stringstream ss(path); while (getline(ss, cur, /)) { // 空字符串或者 .直接忽略 if (cur.empty() || cur .) { continue; } // .. 表示返回上一级 if (cur ..) { if (!st.empty()) { st.pop(); } } // 普通目录压入栈 else { st.push(cur); } } // 栈中保存的是从根目录到当前目录的路径 string result; while (!st.empty()) { result / st.top() result; st.pop(); } // 如果最后没有目录说明就是根目录 if (result.empty()) { return /; } return result; } int main() { string path /a/./b/../../c/; string result simplifyPath(path); cout result endl; return 0; }
返回列表