71. Simplify Path

xiaoxiao2021-02-28  11

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

For example, path = "/home/", => "/home"

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

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".

class Solution { public: string simplifyPath(string path) { string res = ""; stack<string> st; int start = 0; while (start < path.size()) { while (start < path.size() && path[start] == '/') { start++; } int end = start; while (end < path.size() && path[end] != '/') { end++; } string tmp = path.substr(start, end - start); start = end + 1; if (tmp == ".." && st.empty()) { continue; } else if (tmp == ".." && !st.empty()) { st.pop(); } else if (tmp == "." || tmp == "") { continue; } else { st.push(tmp); } } if (st.empty()) { return "/"; } while (!st.empty()) { res = "/" + st.top() + res; st.pop(); } return res; } };注意当str为空的时候,不要加入stack里面,一开始我犯错误了

转载请注明原文地址: https://www.6miu.com/read-1650189.html

最新回复(0)