Simplify Path

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

C++:
01 string simplifyPath(string path)
02 {
03       string result;
04       if(path[0]!=‘/’)
05           return result;
06       result+=‘/’;
07       int n=path.size();
08       bool slashflag=true;
09       for(int i=1;i<n ; ){
10           if(path[i]==‘/’){
11               if((i!=n1)&&(slashflag==false)){
12                   slashflag=true;
13                   result+=‘/’;
14               }
15               i++;
16               continue;
17            }
18            if(path.substr(i,2)==“./”){
19               i=i+2;
20               slashflag=true;
21               continue;
22           }
23           if(path.substr(i,2)==“..”){
24               int cnt=1;
25               int t=result.size();
26               if(t>2){
27                   for(int j=t2;;j){
28                       if(result[j]==‘/’)
29                           break;
30                        cnt++;
31                   }
32                   result=result.substr(0,result.size()cnt);
33               }
34               if(path.substr(i+2,1)==“/”){
35                   i=i+3;
36                   slashflag=true;
37               }
38               else
39                   i=i+2;
40               continue;
41           }
42           if(path[i]!=‘.’)
43              result+=path[i];
44           slashflag=false;
45           i++;
46       }
47       int cnt=0;
48       int t=result.size();
49       if(t>1){
50           for(int i=t1;i>0;i){
51               if(result[i]!=‘/’)
52                   break;
53               cnt++;
54           }
55       }
56       result=result.substr(0,tcnt);
57       return result;
58 }
Advertisements
This entry was posted in 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