Simplify Path

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

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

C++:
01 class Solution {
02 public:
03     string simplifyPath(string path) {
04         // Start typing your C/C++ solution below
05         // DO NOT write int main() function
06         int n=path.size();
07         int p=0;
08         vector<string> tmp;
09         for(int i=0;i<n;i++)
10         {
11             if(path[i]==‘/’)
12             {
13                 string s=path.substr(p,ip+1);
14                 p=i+1;
15                 if((s==“./”)||(s==“/”))
16                   continue;
17                 if(s==“../”)
18                 {
19                   if(!tmp.empty())
20                      tmp.pop_back();
21                 }
22                 else
23                 {
24                    tmp.push_back(s);
25                 }
26             }
27             else if(i==n1)
28             {
29                 string s=path.substr(p,ip+1);
30                 if((s==“..”)&&(!tmp.empty()))
31                    tmp.pop_back();
32                 else
33                     tmp.push_back(s);
34                 break;
35             }
36         }
37         string result;
38         for(int i=0;i<tmp.size();i++)
39         {
40             result+=tmp[i];
41         }
42         if(result[0]!=‘/’)
43         {
44             result=“/”+result;
45         }
46         int m=result.size()1;
47         int t=m;
48         for(;t>0;t)
49         {
50             if((result[t]!=‘/’)&&(result[t]!=‘.’))
51                 break;
52         }
53         result=result.substr(0,t+1);
54         return result;
55     }
56 };
Advertisements
This entry was posted in Array and linked list, String. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s