• 071 Simplify Path 简化路径


    给定一个文档 (Unix-style) 的完全路径,请进行路径简化。
    例如,
    path = "/home/", => "/home"
    path = "/a/./b/../../c/", => "/c"
    边界情况:
        你是否考虑了 路径 = "/../" 的情况?
        在这种情况下,你需返回"/"。
        此外,路径中也可能包含多个斜杠'/',如 "/home//foo/"。
        在这种情况下,你可忽略多余的斜杠,返回 "/home/foo"。
    详见:https://leetcode.com/problems/simplify-path/description/

    Java实现:

    class Solution {
        public String simplifyPath(String path) {
            Stack<String> stk=new Stack<String>();
            String[] strs=path.split("/");
            for(String str:strs){
                if(!stk.isEmpty()&&str.equals("..")){
                    stk.pop();
                }else if(!str.equals(".")&&!str.equals("")&&!str.equals("..")){
                    stk.push(str);
                }
            }
            List<String> res=new ArrayList(stk);
            return "/"+String.join("/",res);
        }
    }
    

     C++实现:

    class Solution {
    public:
        string simplifyPath(string path) {
            stack<string> stack;
    		int i = 0;
    		while (i < path.size()) {
    			// 跳过斜线'/'
    			while (i < path.size() && '/' == path[i])
                {
                    ++i;
                }
    			// 记录路径名
    			string s = "";
    			while (i < path.size() && path[i] != '/')
                {
                    s += path[i++];
                }
    			// 如果是".."则需要弹栈,否则入栈
    			if (".." == s && !stack.empty())
                {
                    stack.pop();
                }
    			else if ("" != s&&s != "."&&s != "..")
                {
                    stack.push(s);
                }
    		}
    		// 如果栈为空,说明为根目录,只有斜线'/'
    		if (stack.empty())
            {
                return "/";
            }
    		// 逐个连接栈里的路径名
    		string s = "";
    		while (!stack.empty())
    		{
    			s = "/" + stack.top() + s;
    			stack.pop();
    		}
    		return s;
        }
    };
    
  • 相关阅读:
    Oracle创建上下文 SYS_CONTEXT
    闪回版本查询
    物化视图创建案例
    Oracle 多租户环境学习路线图
    【Mysql MHA】CentOS7.6+Mysql8.0.16 入坑
    【翻译】--19C Oracle 安装指导
    Docker(3)---常用命令
    Docker(2)---安装(设置镜像加速器)
    Docker(1)---基础概念
    AMQP高级消息队列协议
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8708127.html
Copyright © 2020-2023  润新知