【LeetCode】Simplify Path实现(Java版)

来源:互联网 发布:腾讯云域名有啥用 编辑:程序博客网 时间:2024/06/05 19:42
描述
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".


package String;import java.util.Vector;public class SimplifyPath {public static String Solution(String path){Vector<String> dirs = new Vector<String>();;for(int i = 0; i != path.length()-1;){++i;int j = path.indexOf("/", i);if(j == -1){if(!(path.substring(i).equalsIgnoreCase("..")))dirs.add(path.substring(i));break;}String dir = path.substring(i,j);if(!dir.equalsIgnoreCase("") && !dir.equalsIgnoreCase(".")){if(dir.equalsIgnoreCase("..")){if(dirs.size() != 0)dirs.remove(dirs.size()-1);}elsedirs.add(dir);}i = j;}String out = "";if(dirs.size() == 0){out = "/";}else{for(String dir:dirs){out = out + "/" + dir;}}return out;}public static void main(String[] args){String path = "/../";String path1 = "/home//foo/";String path2 = "/home/foo/";String path3 = "/home/foo";String path4 = "/home/";String path5 = "/";String path6 = "/..";String path7 = "/a/./b/../../c/";String path8 = "/a/./b/../c/";System.out.println(Solution(path));System.out.println(Solution(path1));System.out.println(Solution(path2));System.out.println(Solution(path3));System.out.println(Solution(path4));System.out.println(Solution(path5));System.out.println(Solution(path6));System.out.println(Solution(path7));System.out.println(Solution(path8));}}


0 0
原创粉丝点击