-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimplifyDirectoryPath.cpp
More file actions
56 lines (46 loc) · 1.04 KB
/
SimplifyDirectoryPath.cpp
File metadata and controls
56 lines (46 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*Question:
Simplify Directory Path
Asked in:
Microsoft
Given an absolute path for a file (Unix-style), simplify it.
Examples:
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
Note that absolute path always begin with ‘/’ ( root directory )
Path will not have whitespace characters.
NOTE: three consecutive dots are not allowed.
*/
string Solution::simplifyPath(string A) {
stack<string> s;
string t="";
int count=0;
for(int i=0;i<A.size();i++){
if(A[i]=='/'){
continue;
}
if(A[i]=='.'){
if(i+1<A.size() && A[i+1]=='.'){
if(!s.empty())
s.pop();
i++;
}
}
else{
string tem="";
while(i<A.size() && A[i]!='/'){
tem = tem+A[i];
i++;
}
s.push(tem);
}
}
string ret="";
while(!s.empty())
{
ret="/"+s.top()+ret;
s.pop();
}
if(ret=="")
return "/";
return ret;
}