• 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".

    方法

    题目的要求是输出Unix下的最简路径,Unix文件的根文件夹为"/","."表示当前文件夹,".."表示上级文件夹。

    使用Stack来进行处理。

        public String simplifyPath(String path) {
        	Stack<String> stack = new Stack<String>();
        	String str = "";
        	for (int i = 0; i < path.length(); i++) {
        		if (path.charAt(i) == '/') {
        			if (str.equals("..")) {
        				if (!stack.isEmpty()) {
        					stack.pop();
        				}
        			} else if (!str.equals(".") && !str.equals("")) {
        				stack.push(str);
        			}
        			str = "";
        		} else {
        			str += path.charAt(i);
        		}
        	}
        	if (str.equals("..")) {
    			if (!stack.isEmpty()) {
    				stack.pop();
    			}
        	} else if (!str.equals(".") && !str.equals("")) {
        		stack.push(str);
        	}
        	
        	if (stack.isEmpty()) {
        		return "/";
        	}
        	
        	String re = "";
        	while (!stack.isEmpty()) {
        		re = "/" + stack.pop() + re;
        	}
        	return re;
        }


  • 相关阅读:
    《需求分析与系统设计》第二篇阅读体会
    《需求分析与系统设计》第一篇阅读体会
    《编写有效用例》第二篇阅读体会
    项目目标文档
    字符流
    字节流
    递归
    File类
    JDBC接口和工具类
    异常
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6718133.html
Copyright © 2020-2023  润新知