博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode 中等题:Simplify Path 简化路径
阅读量:6937 次
发布时间:2019-06-27

本文共 1610 字,大约阅读时间需要 5 分钟。

题目

简化路径 

给定一个文档(Unix-style)的完全路径,请进行路径简化。

样例

"/home/", => "/home"

"/a/./b/../../c/", => "/c"

挑战
  • 你是否考虑了 路径 = "/../" 的情况?

    在这种情况下,你需返回"/"

  • 此外,路径中也可能包含双斜杠'/',如 "/home//foo/"

    在这种情况下,可忽略多余的斜杠,返回 "/home/foo"

解题

linux 没碰过,真的表示不知道这个是什么鬼

, 

Unix的path规则可以在这里了解:
http://en.wikipedia.org/wiki/Path_(computing)

路径简化的依据是:

当遇到“/../"则需要返回上级目录,需检查上级目录是否为空。

当遇到"/./"则表示是本级目录,无需做任何特殊操作。

当遇到"//"则表示是本级目录,无需做任何操作。

当遇到其他字符则表示是文件夹名,无需简化。

当字符串是空或者遇到”/../”,则需要返回一个"/"。

当遇见"/a//b",则需要简化为"/a/b"。

 

先将字符串依"/"分割出来,然后检查每个分割出来的字符串。

当字符串为空或者为".",不做任何操作。

当字符串不为"..",则将字符串入栈。

当字符串为"..", 则弹栈(返回上级目录)。

这样栈内的字符就是答案,但是需要进行重新组合

以“/”隔开组合

public class Solution {    /**     * @param path the original path     * @return the simplified path     */    public String simplifyPath(String path) {        // Write your code here        if(path==null)            return null;        String[] p = path.split("/");        Stack
stack = new Stack
(); for(int i=0;i
Java Code

总耗时: 9414 ms

class Solution:    # @param {string} path the original path    # @return {string} the simplified path    def simplifyPath(self, path):        # Write your code here        if path == None:            return None        p = path.split("/")        stack = []        for s in p:            if s == '.' or len(s)==0:                continue            elif s == '..':                if len(stack)!=0:                    stack.pop()            else:                stack.append(s)        res = ""        if len(stack)==0:            return "/"        for i in stack:            res += "/"+i        return res
Python Code

总耗时: 450 ms

转载地址:http://zrpjl.baihongyu.com/

你可能感兴趣的文章
【BZOJ 2337】XOR和路径
查看>>
部署Hyperledger Fabric之SIGSEGV问题
查看>>
FileShare枚举的使用(文件读写锁)
查看>>
webapi
查看>>
H5项目常见问题汇总及解决方案
查看>>
视频播放器
查看>>
Python day2
查看>>
paper 119:[转]图像处理中不适定问题-图像建模与反问题处理
查看>>
HTML特殊字符
查看>>
vue-cli#2.0项目结构分析
查看>>
java中swing的简单用法,做一个小界面
查看>>
Effective C++—条款3:尽可能使用const
查看>>
Mac系统
查看>>
Linux设备驱动程序学习之分配内存
查看>>
JSON格式要求
查看>>
【IOS 开发】Object-C 运算符
查看>>
原博客链接,CSDN和科学网
查看>>
【温故知新】形态学操作
查看>>
my13_mysql xtrabackup备份的时间点
查看>>
java死锁详解
查看>>