-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimplifyDirPath.java
51 lines (40 loc) · 1.09 KB
/
simplifyDirPath.java
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
/*
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 characte
*/
public String simplifyPath(String a) {
if(a.isEmpty() || a ==null || a== "")
return a;
String[] path = a.split("/");
String st= "";
Stack<String> stack = new Stack<String>();
int i=0;
while( i<path.length)
{
if(path[i].compareTo("/")==0 || path[i].compareTo(".")==0 || path[i].isEmpty()) {
i++;
continue;
}
if(path[i].compareTo("..")!=0) {
stack.push(path[i]);
i++;
}
else
{
if(!stack.isEmpty())
stack.pop();
i++;
}
}
while(!stack.isEmpty())
{
st = "/"+ stack.pop()+st;
}
if(st=="")
st = "/";
return st;
}