leetcode 71. Simplify Path(简化路径)

告别ROS1思维:在ROS2 Humble上,用Python搞定MoveIt2机械臂控制的完整流程 本文详细介绍了在ROS2 Humble环境下使用Python控制MoveIt2机械臂的完整流程。从环境配置、架构变革到实战操作,涵盖URDF适配、Action接口编程及性能优化技巧,帮助开发者高效迁移ROS1项目至ROS2平台,实现工业级机械臂控制。 阅读详情

Given a string path, which is an absolute path (starting with a slash ‘/’) to a file or directory in a Unix-style file system, convert it to the simplified canonical path.

In a Unix-style file system, a period ‘.’ refers to the current directory, a double period ‘…’ refers to the directory up a level, and any multiple consecutive slashes (i.e. ‘//’) are treated as a single slash ‘/’. For this problem, any other format of periods such as ‘…’ are treated as file/directory names.

The canonical path should have the following format:

The path starts with a single slash ‘/’.
Any two directories are separated by a single slash ‘/’.
The path does not end with a trailing ‘/’.
The path only contains the directories on the path from the root directory to the target file or directory (i.e., no period ‘.’ or double period ‘…’)
Return the simplified canonical path.

Example 1:

Input: path = “/home/”
Output: “/home”
Explanation: Note that there is no trailing slash after the last directory name.
Example 2:

Input: path = “/…/”
Output: “/”
Explanation: Going one level up from the root directory is a no-op, as the root level is the highest level you can go.
Example 3:

Input: path = “/home//foo/”
Output: “/home/foo”

简单来说就是linux下路径简化问题。

思路:
路径简化有以下几种情况:

  1. 多个" / “可简化为一个” / "。
  2. " … “表示回到上一路径,比如”/home/leetcode/…“就是”/home", 这相当于把上一个leetcode给pop出来了。
  3. “.“表示当前路径,比如”/home/leetcode/.”, 那就是"/home/leetcode",可以看到"."没有任何作用,可以跳过
  4. 如果路径为空,认为就在根目录下,即" / "。

根据上面的情况,可以用" / “来split路径,提取split出来的字符串,然后用”/“连接这些字符串。
其中,”.“的字符串直接跳过,”…“就把前一个字符串pop掉,空字符串跳过(多个”/"简化为1个)。

    public String simplifyPath(String path) {
        Stack<String> stack = new Stack();
        StringBuilder result = new StringBuilder();
        String[] folder = path.split("/");
        
        for(int i = 0; i < folder.length; i++) {
            if(!stack.isEmpty() && folder[i].equals("..")) {
                stack.pop();
            }else if(!folder[i].equals("") && !folder[i].equals(".") &&
                   !folder[i].equals("..")){
                stack.push(folder[i]);
            }
        }
        
        if(stack.isEmpty()) return "/";
        
        while(!stack.isEmpty()) {
            result.insert(0, stack.pop());
            result.insert(0, "/");
        }
        return result.toString();
    }

用数组模拟stack

    public String simplifyPath(String path) {
        int n = path.length();
        String[] folders = path.split("/");
        String[] st = new String[n]; //stack
        int head = -1;   //栈顶
        StringBuilder sb = new StringBuilder();

        for(String folder : folders) {
            if(folder.equals("/") || folder.equals(".") || folder.equals("")) continue;
            if(folder.equals("..")) {
                if(head >= 0) head --;
            } else st[++head] = folder;
        }
        
        if(head == -1) return "/";

        for(int i = 0; i <= head; i++) {
            sb.append("/");
            sb.append(st[i]);
        }
        return sb.toString();
    }

    //文件夹有几种情况
    //'/':'///'split出来的,不做操作,跳过
    //"",split出来的第一个符号,需要跳过
    //‘..',上一级,stack.pop
    //'.',当前文件夹,不做操作
    //其他,文件夹名,stack.push
libfranka---joint_impendence_control例程分析 joint_impedance_control.cpp例程分析 部分内容来自链接,我个人以初学者的角度对代码进行了更加细致的解释。 核心部分: // Set and initialize trajectory parameters. const double radius = 0.05; const double vel_max = 0.25; const double acceleration_time = 2.0; const double run_time = 20.0; d 阅读详情

相关推荐

HFSS入门 - 传输线线路损耗和串扰仿真

下图中两相近传输线存在端口间的串扰,而同一根传输线存在线路损耗。 我们可用S21描述端口1到端口2的线路损耗(插损?),用S13描述近端串扰,S24描述远端串扰,串扰通常要求-20dB以下。 实验目的:传输线线路损耗和串扰仿真 具体步骤: 1.草图: 其中板厚Subh为1mm。其余参数具体值如下: 2.由草图作图: 其中介质板表面设为GND。 3.设置激励:先在第一根传输线相连的XZ平面上做一...

qq_37274411的博客 9156

从零开始刷力扣(九十七)——71. 简化路径

分类:栈与递归 题目描述 给你一个字符串path,表示指向某一文件或目录的Unix 风格绝对路径(以'/'开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。 请注意,返回的规范路径必须遵循下述格式...

guxin_duyin的博客 582

webapi .net core8.0配置使用Token权限认证

本人在网上找了很多版本,不是太复杂就是不行。

m0_74824592的博客 1760

leetcode----71. Simplify Path

链接: https://leetcode.com/problems/simplify-path/ 大意: 简化Unix路径(路径以全路径形式给出)。例子: 思路: 栈思想。 首先,对给定的全路径字符串path以"/"分割为字符串数组。创建一个顺序栈(顺序栈比链式栈速度更快),依次对比字符串数组中的每个元素,判断当前元素是该入栈还是栈顶元素弹出还是栈不变继续查看下一个字符串。可有...

smart_ferry的博客 173

ubuntu20.04开机黑屏卡在/dev/sda1:clean,***files,***blocks,解决心得记录

这个问题如果你百度,会发现目前有很多种解决方法。 有更新显卡驱动的,有卸载上一次安装软件的,还有各种奇奇怪怪的故障原因。 如果你是属于上述情况,那么按照百度和论坛的各种指引操作一般都能解决。 但我这里主要说一种特殊情况,就是我什么也没有操作,我什么也没干。就是正常使用系统关了机突然就报错了。 这也是自己亲自遇到的问题,做个小记录方便以后自己回顾。 上一次出现这种情况我重装系统了,这次用了两个月又出现了,重装成本太高,我接受不了,于是找到解决办法。 首先找个终端进入,进入终端的方法很多,用安装u盘

qq_41517017的博客 2万+

西门子交换机环网冗余设置(实战篇2.2)

MRP的重组时间为 200ms 因此 PROFINET 通信必须选择大于 200ms 的看门狗时间,看门狗。ET200SP默认为 2ms*3=6ms) MRP 的重组时间为 200ms 故系统会报出看门狗超时。更新,默认是 3 个周期,超出设置的周期数就会报 IO 设备故障。时间不是直接配置的,而是作为没有 IO 数据可接受的更新周期,也就是允许几个周期没有数据。来达到大于 200ms 的看门狗时间的要求(看门狗时间 可接受更新周期数 更新时间)。是IO 控制器和 IO 设备)

weixin_42580591的博客 363

linux 简化当前路径,Linux 基础 - 常用命令篇

hi 大家好,最近在《Java从零到企业级电商项目实战_服务端》课程的QQ群里,发现好多小伙伴们都是之前没有接触过linux,突然上手感觉有点乏力,这里领着大家一起梳理一下,linux基础命令。大家这么积极努力,我也一定要尽力哟一起加油一、命令的基本格式[root@localhost~]root为用户名~表示当前所在位置localhost主机名‘#’超级用户’$" 普通用户命令的基本格式:命令 [...

weixin_35900818的博客 248

Windows服务器环境下 OpenCode Skill 下载与运行全流程实战指南(小白版)

Windows服务器环境下 OpenCode Skill 下载与运行全流程实战指南(小白版),OpenCode技能安装与使用指南,分为四个步骤:1)准备Windows服务器环境并确认OpenCode可用;2)通过Git或直接下载方式获取Skill;3)配置技能路径至.opencode/config.json;4)运行测试技能。关键点包括路径配置必须使用双反斜杠、确保Python环境正确安装、管理员权限运行等。文中提供了文本总结技能的完整案例,从创建skill.yaml和main.py到注册运行的全流程,并针

专注于编程、AI、人工智能等多个领域内容研究和分析 1079

71. Simplify Path(简化路径)解法(C++ & 注释)

71. Simplify Path(简化路径)1. 题目描述2. 分组处理(Process by Groups)2.1 解题思路2.2 实例代码3. 参考资料 1. 题目描述 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规

主要研究图形学相关领域 915

火焰烟雾识别系统【数据集+源码+UI界面】

数据集准备:收集并标注火焰与烟雾数据。YOLOv10训练:训练YOLOv10模型来识别火焰和烟雾。实时检测:通过摄像头视频流进行实时检测,并显示检测结果。UI界面设计:用Tkinter设计简易界面,显示检测结果。完成以上步骤后,可以实现一个完整的火焰烟雾识别系统,具备实时检测与友好的用户界面。

2201_76125393的博客 1135

用 ADBC 把动态查询做得又快又稳:从 CL_SQL_STATEMENT 到安全取数的工程化实践

本文介绍了ABAP中ADBC(ABAP Database Connectivity)技术的核心用法与最佳实践。ADBC作为Open SQL的补充,适用于动态查询、数据库特性调用等场景。文章通过示例代码详细演示了使用ADBC执行查询的完整流程:创建SQL语句、执行查询获取结果集、批量装载数据到内表,以及分包读取处理大数据量。特别强调了动态SQL的安全防护措施,包括输入转义和参数绑定等防注入技术。同时对比了ADBC与Open SQL的适用场景,指出ADBC更适合需要动态访问数据库原生功能的场合。文章还分析了代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1770

【Leetcode】71 Simplify path 简化路径

Simplify path1. 题目——来自leetcode Given an absolute path for a file (Unix-style), simplify it. For example, path = “/home/”, => “/home” path = “/a/./b/../../c/

LYZ 813

【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法

相比C文本类编程语言,Simulink图形化编程语言的优势是逻辑思路和数据流清晰了很多,劣势是程序执行的时序不明确,而且各个模块的配置使编程的灵活度下降了不少,在使用习惯上面总感觉有各种限制。本文就是拆解Simulink中最基础的几个编程模块,发扬它的优势,避开劣势。

Mr.Cssust的博客 3849

LeetCode71 Simplify Path 简化路径

LeetCode71 Simplify Path 简化路径 题干如下 Given an absolute path for a file (Unix-style), simplify it. For example, path = “/home/”, =&amp;amp;amp;amp;amp;amp;amp;gt; “/home” path = “/a/./b/…/…/c/”, =&amp;amp;amp;amp;amp;amp;amp;gt; “/c” path = “/a/

weixin_38282689的博客 163

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode 71. Simplify Path(简化路径)

原题网址:https://leetcode.com/problems/simplify-path/ Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c"

James Pan 853

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode 71 simplify-path 简化路径

题目链接 https://leetcode-cn.com/problems/simplify-path/ 题意         给出Unix系统下的一个路径,化简这个路径。其实更类似于输入cd以后,后面写了一个路径,而系统会跳转到一个确定的路径中,我们需要得到的就是这个最终的路径。例如:"/////file/word/../",如果我们在前面加上cd命令,那么实际上跳转的路径是"/file"...

iwts 309

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Leetcode 71. Simplify Path Linux路径简化

Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the canonical path. In a UNIX-style file system, a period . refers to the current directory. Furthermore,...

salmonwilliam的博客 645

Leetcode 71.简化路径(Simplify Path)

Leetcode 71.简化路径 1 题目描述(Leetcode题目链接)   以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。   在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。   请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录...

qq_39378221的博客 340

Leetcode算法——71、简化路径(simplify path)

给定一个文件的绝对路径(unix系统),将其简化。 在unix文件系统中,’.’ 表示当前目录,因此可以被忽略。’…’ 表示上一个目录,因此需要取消掉最后一层目录。 示例: path = "/home/", =&gt; "/home" path = "/a/./b/../../c/", =&gt; "/c" path = "/a/../../b/../c//.//", =&gt; &q

HappyRocking的专栏 1373

[LeetCode] 71. Simplify Path 简化路径

以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有...

Fabio的博客 291

Leetcode71. Simplify Path简化路径

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

Ha12312的博客 148

Leetcode 71. Simplify Path 简化路径 解题报告

1 解题思想题目就是把一个Unix或者类Unix系统下的一个地址进行简化(找到其最精简的地址)。简化的示例可以看原题当当中。这道题要使用一个栈,来保存当前的路径状况。我们首先需要按照“/”将地址进行分割,分割出不同的操作: 1、如果是空或者“.”,那么当前没有什么地址变动,地址栈不需要变动 2、如果是“..” 则需要出栈(如果栈为空则不操作)因为这是返回上级目录的符号 3、其他情况压栈处理完成

MebiuW的专栏 4705

【LeetCode】#71简化路径(Simplify Path)

【LeetCode】#71简化路径(Simplify Path) 题目描述 给定一个文档 (Unix-style) 的完全路径,请进行路径简化。 边界情况: 你是否考虑了 路径 = “/…/” 的情况? 在这种情况下,你需返回 “/” 。 此外,路径中也可能包含多个斜杠 ‘/’ ,如 “/home//foo/” 。 在这种情况下,你可忽略多余的斜杠,返回 “/home/foo” 。 示例 path...

weixin_43858604的博客 121

leetcode 71. Simplify Path(Unix下简化路径)

算法思路: 首先设置一个String类型的栈。用spilt方法,对path进行分割,以“/”为分隔符分割得到一组字符串。接着遍历这组字符串,遇到空字符串(“”)和当前目录(&quot;.&quot;)跳过,若字符串为&quot;…“且栈不为空时弹栈,若字符串为”…“且栈为空则跳过,其他情况则将元素压栈(if…else if…else…)。最后将栈中的元素和”/&quot;按顺序组合成一条有效路径,当路径为空时,返回根目录,否则返回路径。...

IT_BOY__的博客 435

【leetcode_71】【中等】simplify-path / 简化路径

【leetcode_71】【中等】simplify-path / 简化路径

过得精彩,无所谓好坏 418

leetcode 71. 简化路径(Simplify Path)

目录 题目描述: 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 示例 6: 解法: 题目描述: 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在...

weixin_30778805的博客 102
上一篇: leetcode 1249. Minimum Remove to Make Valid Parentheses(移除最少的无效括号)
下一篇: leetcode 946. Validate Stack Sequences(有效栈序列)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值