当前位置:网站首页>简化路径(力扣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
边栏推荐
- Use Chenxi bookkeeping book to analyze the balance of revenue and expenditure of each account in a certain period of time
- Methods of nested recycleview to solve sliding conflict and incomplete item display
- RPM package management
- 机器学习理论之(8):模型集成 Ensemble Learning
- listener.log
- Resolution: cnpm: unable to load file \cnpm. PS1, because running scripts is prohibited on this system
- 使用 bitnami/postgresql-repmgr 镜像快速设置 PostgreSQL HA
- 7、 DOM (Part 2) - chapter after class exercises and answers
- Résolution: cnpm: impossible de charger le fichier... Cnpm. PS1 parce que l'exécution de scripts est désactivée sur ce système
- Kettle paoding jieniu Chapter 17 text file output
猜你喜欢
Ctfshow - web362 (ssti)
Tangle
Machine learning practice - naive Bayes
ESP32 LVGL8. 1 - label (style 14)
WebView opens H5 video and displays gray background or black triangle button. Problem solved
listener. log
After opening the original normal project, the dependency package displays red and does not exist.
Introduction to ROS learning notes (II)
ctfshow-web361(SSTI)
Druid SQL和Security在美团点评的实践
随机推荐
iptables -L执行缓慢
RPM包管理
WebView opens H5 video and displays gray background or black triangle button. Problem solved
ESP32 LVGL8. 1 - img picture (IMG 20)
Nacos集群搭建和mysql持久化配置
ESP32 LVGL8. 1 - input devices (input devices 18)
Use of content provider
Daily network security certification test questions (April 15, 2022)
os_ authent_ Prefix
Golang 语言实现TCP UDP通信
CANopen STM32 transplantation
机器学习理论基础篇--关于机器学习的一些术语
迁移学习进阶
昇腾 AI 开发者创享日全国巡回首站在西安成功举行
ESP32 LVGL8. 1 - event (event 17)
[popular science] CRC verification (I) what is CRC verification?
CISSP certified daily knowledge points (April 19, 2022)
机器学习理论之(8):模型集成 Ensemble Learning
Eight bit binary multiplier VHDL
WebView saves the last browsing location