当前位置:网站首页>简化路径(力扣71)
简化路径(力扣71)
2022-04-23 18:47:00 【小钦不掉发】
Deque,Queue,stack简单了解
Deque实现一个双端队列,Queue先进先出
| Queue | Deque | |
|---|---|---|
| 添加元素到队尾 | add()/offer() | addLast()/offerLast() |
| 取队首元素并删除 | remove()/poll() | removeFirst()/pollFirst() |
| 取队首元素但不删除 | element()/peek() | getFirst()/peekFirst() |

stack(栈,原则为先进后出,后进先出)常用方法:
①push()入栈
②top()获得栈顶元素
③pop()弹出栈顶元素
④empty()可以检测stack内是否为空,返回true为空,返回false为非空
⑥size()返回stack内元素的个数
简化路径
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。
请注意,返回的 规范路径 必须遵循下述格式:
始终以斜杠 '/' 开头。
两个目录名之间必须只有一个斜杠 '/' 。
最后一个目录名(如果存在)不能 以 '/' 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。
返回简化后得到的 规范路径 。
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String path = sc.next();
simplifyPath(path);
}
public static String simplifyPath(String path) {
String[] str = path.split("/");// 根据"/"将路径分割成数组
Deque<String> deque = new ArrayDeque<String>();
for (String string : str) {
if (string.equals("..")) {// ".."切换到上一级目录,因此需要删掉一层路径
if (!string.isEmpty()) {
deque.pollLast(); // 此处即为删掉一层路径
}
} else if (string.length() > 0 && !".".equals(string)) {// 即数组的当前元素长度大于0,且不为"."
deque.offerLast(string);// 就将当前元素添加到ArrayDeque队尾
}
}
StringBuffer sbf = new StringBuffer();
if (deque.isEmpty()) {
sbf.append("/");
} else {
while (!deque.isEmpty()) {
sbf.append("/");
sbf.append(deque.pollFirst());
}
}
System.out.println(sbf.toString());
return sbf.toString();
}
}
浅浅的吧deque.isEmpty()改成了deque==null,全部改成类似这种就会超出内存,so还是多用isEmpty()吧!
吐槽 :厉害的人看着题目,菜的人看着题解,我这种菜中菜的看着题解还得搜一下Deque咋用!!!先打一遍理解,然后理解之后再打一遍

版权声明
本文为[小钦不掉发]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_63897791/article/details/124366020
边栏推荐
- Esp32 (UART receiving and sending) - receiving and sending communication of serial port (4)
- ESP32 LVGL8. 1 - msgbox message box (msgbox 28)
- WebView opens H5 video and displays gray background or black triangle button. Problem solved
- Sentinel规则持久化进Nacos
- ESP32 LVGL8. 1 - BTN button (BTN 15)
- Dynamically add and delete layouts
- iptables初探
- Simple use of viewbinding
- ctfshow-web361(SSTI)
- Golang 语言实现TCP UDP通信
猜你喜欢

STM32: LCD display

MVVM model
![[popular science] CRC verification (I) what is CRC verification?](/img/80/a1fa10ce6781aebf1b53d91fba52f4.png)
[popular science] CRC verification (I) what is CRC verification?

Tangle

解决:cnpm : 无法加载文件 ...\cnpm.ps1,因为在此系统上禁止运行脚本

Simple use of navigation in jetpack

Use bitnami / PostgreSQL repmgr image to quickly set up PostgreSQL ha

The first leg of the national tour of shengteng AI developer creation and enjoyment day was successfully held in Xi'an

教你用简单几个步骤快速重命名文件夹名

机器学习理论之(8):模型集成 Ensemble Learning
随机推荐
os_authent_prefix
How can programmers quickly develop high-quality code?
Nacos作为服务配置中心实战
CISSP certified daily knowledge points (April 15, 2022)
Tangle
Ctfshow - web362 (ssti)
ESP32 LVGL8. 1 - msgbox message box (msgbox 28)
Nacos集群搭建和mysql持久化配置
CISSP certified daily knowledge points (April 14, 2022)
iptables -L执行缓慢
Usage of functions decode() and replace() in SQL
纠结
Daily network security certification test questions (April 12, 2022)
ESP32 LVGL8. 1 - arc (arc 19)
CISSP certified daily knowledge points (April 13, 2022)
Machine learning theory (8): model integration ensemble learning
视频边框背景如何虚化,简单操作几步实现
7、 DOM (Part 2) - chapter after class exercises and answers
机器学习理论之(7):核函数 Kernels —— 一种帮助 SVM 实现非线性化决策边界的方式
SQL中函数 decode()与 replace()的用法
