zoukankan      html  css  js  c++  java
  • 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;
        }


  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6718133.html
Copyright © 2011-2022 走看看