【LeetCode】71. Simplify Path

栏目: 编程工具 · 发布时间: 6年前

内容简介:【LeetCode】71. Simplify Path

问题描述

https://leetcode.com/problems/simplify-path/#/description

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

算法

使用 spli('/') 切割字符串,如 /a/./b/../../c/ 切割为: ['a','.','b','..','.','c',''] ,然后就好办了。使用一个栈来存储路径,然后遇到 ['.',''] 就跳过去,遇到 '..' 就将栈的最近元素弹出。

代码

public String simplifyPath(String path) {  
            Stack<String> stack = new Stack<>();
            for(String dir:path.split("/")) {
                if("..".equals(dir)) {
                    if(!stack.isEmpty())
                        stack.pop();
                } else if(".".equals(dir)) {
                    continue;
                } else {
                    if(!"".equals(dir)) {
                        stack.push(dir);
                    }
                }
            }
            String r = "";
            for(String dir:stack) {
                r = r + "/" + dir;
            }
            return "".equals(r)?"/":r;
        }
转载请注明出处

http://www.zgljl2012.com/leetcode-71-simplify-path/


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective Objective-C 2.0

Effective Objective-C 2.0

Matt Galloway / 爱飞翔 / 机械工业出版社 / 2014-1 / 69.00元

《effective objective-c 2.0:编写高质量ios与os x代码的52个有效方法》是世界级c++开发大师scott meyers亲自担当顾问编辑的“effective software development series”系列丛书中的新作,amazon全五星评价。从语法、接口与api设计、内存管理、框架等7大方面总结和探讨了objective-c编程中52个鲜为人知和容易被忽......一起来看看 《Effective Objective-C 2.0》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具