Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
用栈实现即可,注意一些特殊情况的判断。
1 class Solution { 2 public: 3 string simplifyPath(string path) { 4 stack<string> s; 5 string str; 6 int a, b; 7 bool flag = true; 8 for (int i = 0; i < path.length(); ++i) { 9 if (path[i] == '/') { 10 path[i] = ' '; 11 } 12 } 13 istringstream sin(path); 14 while (sin >> str) { 15 if (str == ".." && !s.empty()) { 16 s.pop(); 17 } else if (str == "." || str == ".." && s.empty()) { 18 19 } else { 20 s.push(str); 21 } 22 } 23 string res = ""; 24 if (s.empty()) { 25 return "/"; 26 } 27 while (!s.empty()) { 28 res = "/" + s.top() + res; 29 s.pop(); 30 } 31 return res; 32 } 33 };