当前位置: 首页 > news >正文

【LeetCode刷题-字符串】--71.简化路径

71.简化路径

image-20231129201557157

思路:

对于给定的字符串,先根据/分割成一个由若干字符串组成的列表,记为names,根据题意names中包含的字符串只能是以下几种:

  • 空字符串
  • 一个点
  • 两个点
  • 只包含英文字母、数字或_的目录名

对于空字符串和一个点,实际上不需要处理,因为空字符串没有任何含义,一个点表示当前目录本身,无需切换目录

对于两个点或目录名,使用一个栈来维护路径中的每个目录名,当遇到两个点时,需要将目录切换到上一级,因此只要栈不为空,就弹出栈顶的元素,遇到目录名,就放入栈中

遍历元素完成上述操作,在所有操作完成后,将从栈底到栈顶的字符串用/进行连接,再在最前面加上/表示根目录

class Solution {public String simplifyPath(String path) {String[] names = path.split("/");  //以/分割得到多个字符Deque<String> stack = new ArrayDeque<String>();for(String name : names){if("..".equals(name)){if(!stack.isEmpty()){stack.pollLast();}}else if(name.length() > 0 && !".".equals(name)){stack.offerLast(name);}}StringBuilder builder = new StringBuilder();if(stack.isEmpty()){builder.append("/");}else{while(!stack.isEmpty()){builder.append("/");builder.append(stack.pollFirst());  //获取对头元素}}return builder.toString();}
}
http://www.lryc.cn/news/248331.html

相关文章:

  • 数据结构与算法(Java)-树形DP题单
  • C#,《小白学程序》第一课:初识程序,变量,数据与显示
  • oracle的sysaux使用量排查sql
  • Cytoscape软件下载、安装、插件学习[基础教程]
  • [Linux] linux防火墙
  • 【开源】基于JAVA的音乐偏好度推荐系统
  • 架构图是什么,该怎么制作?
  • 信号类型(通信)——最小频移键控(MSK)
  • 滴滴打车崩了!全过程
  • 【刷题】DFS
  • Gin投票系统(2)
  • docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01
  • 请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别
  • Nginx漏洞复现与分析
  • Go 中切片(Slice)的长度与容量
  • 顶级大厂Quora如何优化数据库性能?
  • Java第二十章多线程
  • 家庭教育,培养娃什么最重要?
  • Linux 进程(一)
  • vue中的keep-alive详解与应用场景
  • 软件设计师——程序设计语言基础(一)
  • Apache简介与安装
  • set与map
  • 基于单片机智能液位水位监测控制系统
  • C#,《小白学程序》第十七课:随机数(Random)第四,移动平均值(Moving Average)的计算方法与代码
  • 行情分析——加密货币市场大盘走势(11.29)
  • C++——string的字符串比较,字符存取,插入和删除和子串
  • 字节10年经验之谈 —— 从0到1开发自动化测试框架!
  • Mysql(基本介绍+下载安装+服务器+基本使用+建库建表+navicat/mybitas工具+外键及实例)
  • Python+requests+Jenkins接口自动化测试实例