LeetCode_Stack_Simplify Path

71. Simplify Path


1. 问题描述:

输入一个目录String,要求简化目录并返回。

2. 解决思路:

题目需要仔细阅读,要求简化路径。所以有几种情况,需要分情况讨论:

  1. /./ 不做任何目录操作
  2. /../ 跳到上一级目录
  3. // 不做任何目录操作

这里我们使用stack存储目录名,然后遇到操作符号 ‘/./’,’/../’,’//’,做相应操作,具体看代码。

3. java代码:

public class Solution {
    public String simplifyPath(String path) {

        if(path==null || path.length()==0)
            return path;

        String[] pathList = path.split("/");
        String result = "";
        Stack<String> stack = new Stack<String>();

        for(int i=0;i<pathList.length;i++){
            if(pathList[i].equals(".")|| pathList[i].length()==0) {
                continue;
            } else if(pathList[i].equals("..")) {
                if(!stack.empty()){
                    stack.pop();
                }
            } else {
                stack.push(pathList[i]);
            }
        }

        for(int j=0;j<stack.size();j++){
            result +="/"+stack.get(j);
        }
        return result=="" ? "/" : result;
    }
}

4. 算法评估:



希望多多指正交流!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 22:08:23

LeetCode_Stack_Simplify Path的相关文章

Linux下修改环境变量PATH

1.什么是环境变量(PATH) 在Linux中,在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的文件先执行. 我们知道查阅文件属性的指令ls 完整文件名为:/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:"为什么我可以在任何地方执行/bin/ls这个指令呢? " 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀! 当我们在执行一个指令癿时候,举例

Description Resource Path Location Type The superclass &quot;javax.servlet.http.HttpServlet&quot; was not foun

一段时间没亲自建新项目玩乐,今天建立了一Maven project的时候发现了以下异常,Description Resource Path Location Type The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path index.jsp /easyBuy/src/main/webapp line 1 JSP Problem 经过查找原因,原来是因为忘记设置server

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

Linux下修改.bash_profile 文件改变PATH变量的值

Linux中含有两个重要的文件 /etc/profile和$HOME/.bash_profile 每当系统登陆时都要读取这两个文件,用来初始化系统所用到的变量,其中/etc/profile是超级用户所用,$HOME/.bash_profile是每个用户自己独立的,我们可以修改该文件来设置一些变量. 命令用法如下 $ cd (进入用户登陆目录) $ls –al .bash_profile(.bash_profile为隐藏文件,因此要用ls –a命令查找) $vi .bash_profile(用vi

配置class PATH

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. PATH->是用来配置DOS中的快捷命令,里面存储很多路径,从前置方式去搜索 PATHEXT->后缀配置,搜索的时候配合你名字进行搜索 DOS中的临时环境变量(DOS关闭就失效): 1.SET环境变量名称=环境变量内容 2.临时的环境变量配置会把之前的环境变量内容全部覆盖掉,所以以前的PATH内容就丢失了 3.SET PATH=C:\program Fil

使用path监听指定文件系统的变化

在以前的JAVA版本中,如果程序需要检测文件的变化,那么需要开辟一个线程每隔一段时间去遍历一次指定的目录,如果发现此次遍历结果和上次不同,那么就认为文件变动了 ,这样的方式非常繁琐,JAVA 7之后的NIO.2 Path类提供了一个方法来监听指定文件目录内文件的变化状态. 1.获取文件系统的WatchService对 2.使用Path类的方法去注册一个监听,指定监听文件的哪些状态,如新增.修改.删除. package com.nio2; import java.io.IOException;im

Hive报错 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D

报错信息如下 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D 解决方法: 编辑 hive-site.xml 文件,添加下边的属性 <property> <name>system:java.io.tmpdir<

leetcode 656. Coin Path

Given an array A (index starts at 1) consisting of N integers: A1, A2, ..., AN and an integer B. The integer B denotes that from any place (suppose the index is i) in the array A, you can jump to any one of the place in the array A indexed i+1, i+2,

如何更改系统环境变量PATH

1. 如何更改系统环境变量PATH? 答:如果是永久更改系统环境变量,对所有用户生效,有两种办法:推荐使用第三种. (1)vim /etc/profile  加入 PATH=$PATH:/usr/local/mysql/bin/ (2)vim /etc/bashrc 加入 PATH=$PATH:/usr/local/mysql/bin/ (3)vim /etc/profile.d/path.sh #!/bin/bash export PATH=$PATH:/ usr/local/mysql/bi