代码改变世界

leetcode - Simplify Path

2013-11-11 23:09  张汉生  阅读(148)  评论(0编辑  收藏  举报

 

 1 class Solution {
 2 public:
 3     string simplifyPath(string path) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         vector<string> names;
 7         int len = path.length();
 8         string token = "";
 9         for (int i=0; i<len; i++){
10             char c = path.at(i);
11             if (c!='/'){
12                 token += c;
13                 continue;
14             }
15             else if (token == "" || token=="."){
16                 token = "";
17                 continue;
18             }
19             if (token==".." && !names.empty())
20                 names.pop_back();
21             else if (token!="..") names.push_back(token);
22             token = "";
23         }
24         if (token!="" && token!="."){
25             if (token==".." && !names.empty())
26                 names.pop_back();
27             else if (token!="..") names.push_back(token);
28         }
29         if (names.empty())
30             return "/";
31         int size = names.size();
32         string rlt;
33         for (int i=0; i<size; i++)
34             rlt+= "/"+names[i];
35         return rlt;
36     }
37 };