题意:给出一个文件路径,输出简化后的文件路径

如/home/ => /home

/.. => /

/. => /

思路:当遇到/时,就将字符串压入栈中,同时将字符串清空。在遇到..时,判断栈中是否为空,如果不为空,出栈,否则不操作。

但是当字符串扫描完后,记录的字符串可能不为空,并且这个字符串可能为.或者..,所以在遍历完字符串,有些细节要处理

具体代码如下:

public class Solution {public String simplifyPath(String path) {Stack<String> stack = new Stack<>();String tmp = "";for (int i = 0; i < path.length(); i++) {if (path.charAt(i) == '/') {if (!tmp.isEmpty()) {if ("..".compareTo(tmp) == 0) {if (!stack.isEmpty()) stack.pop();} else if (".".compareTo(tmp) != 0) {stack.add(tmp);}tmp = "";}}else tmp = tmp + path.charAt(i);}if (!tmp.isEmpty()) {if ("..".compareTo(tmp) == 0) {if (!stack.isEmpty()) stack.pop();}else if (".".compareTo(tmp) == 0);else stack.add(tmp);}String[] s = new String[stack.size()];int cnt = stack.size();while (!stack.isEmpty()) {s[--cnt] = stack.pop();}String ans = "/";for (int i = 0; i < s.length; i++) {ans += s[i];if (i != s.length - 1) ans += "/";}return ans;}
}

LeetCode Simplify Path(栈操作)相关推荐

  1. [Leetcode] Simplify Path

    Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", ...

  2. [LintCode] Simplify Path [字符串操作]

    Problem Given an absolute path for a file (Unix-style), simplify it. Example "/home/", =&g ...

  3. LeetCode 1441. 用栈操作构建数组

    1. 题目 给你一个目标数组 target 和一个整数 n. 每次迭代,需要从 list = {1,2,3-, n} 中依序读取一个数字. 请使用下述操作来构建目标数组 target : Push:从 ...

  4. LeetCode Mini Parser(栈操作)

    题意:给出一个字符串,包含字符0-9,-,逗号,[,],计算封装后的整数 思路:用栈处理 1.如果遇到[,则入栈 2.如果遇到],并且栈中元素个数大于1,则取出栈顶元素,再将栈顶元素加入刚取现的元素 ...

  5. LeetCode 71. Simplify Path

    LeetCode 71. Simplify Path 本博客转载自:https://blog.csdn.net/makuiyu/article/details/44497901 Solution1:没 ...

  6. Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言)

    Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言) ** 题目: ** 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2 ...

  7. LeetCode 716. 最大栈(双栈 / list+map)

    文章目录 1. 题目 2. 解题 2.1 双栈解法 2.2 list+map 1. 题目 设计一个最大栈,支持 push.pop.top.peekMax 和 popMax 操作. push(x) -- ...

  8. .NET基础-11-ArrayList|Hashtable|File文件操作|Dircetioy文件夹操作|Path路径操作

    集合 ArrayList与Hashtable应为存在拆箱与装箱,所以性能不怎么好,尽量不要使用,而使用泛型集合 可以使用下面的方式输出所消耗的时间 //ArrayList arl = new Arra ...

  9. 【Java】LeetCode 232. 用栈实现队列

    题目描述 : 请你仅使用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push.pop.peek.empty): 实现 MyQueue 类: void push(int x) 将元素 x ...

最新文章

  1. 基于Android Studio搭建Android应用开发环境
  2. 解锁营销自动化行为触发,神策数据《营销自动化应用基准报告 2021》助力企业增长
  3. Oracle 常用dump命令
  4. spring的InitializingBean介绍
  5. Spring框架—IoC容器
  6. Android System分区大小异常
  7. c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...
  8. CSRF 跨站请求伪造 为什么b网站请求a网站的地址能带上a网站的cookie
  9. 迭代列表不要For循环,这是Python列表推导式最基本的概念
  10. linux centos6 mvn,CentOS 6.3 安装Maven3
  11. 车载DSP10段调音教程及调音MP3
  12. 三星 s9 android 9,美国V版三星S9/S9+迎来安卓9更新
  13. 用Javascript实现随机抽奖
  14. linux磁盘扩容不影响原数据,linux 升级磁盘后扩容数据盘大小
  15. 共享计算机突然无法访问,共享的文件突然不能访问了电脑重启后又能访问为什么...
  16. [渝粤教育] 西南科技大学 中国古代文学〔2〕 在线考试复习资料
  17. 新浪云应用 mysql_云应用开发之新浪SAE读写云端数据库MySQL
  18. 使用CCRenderTexture来创建动态纹理
  19. 计算机与音乐,计算机音乐与midi
  20. 什么是顶级域名、根域/二级域名、一级域名/子域名

热门文章

  1. Sitecake – 可视化编辑,所见即所得的 CMS
  2. Daily Scrum 11.5
  3. hrbust 1616 密码锁(广搜)
  4. python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...
  5. python自动化办公都能做什么菜-Python 让我再次在女同学面前长脸了!(真实案例)...
  6. python基本语法语句-python 语法基础篇 一
  7. python语言入门z-python基础语法_8循环语句
  8. python面试-Python面试技巧合集(建议收藏)
  9. python开发需要掌握哪些知识-Python基础进阶需要掌握哪些知识点?
  10. 软件测试用python一般用来做什么-如何将Python应用到实际测试工作中?