Leetcode刷题(第71题)——简化路径

x33g5p2x  于2022-03-03 转载在 其他  
字(0.8k)|赞(0)|评价(0)|浏览(320)

一、题目

二、示例

  1. 示例一
  2. 输入:path = "/home/"
  3. 输出:"/home"
  4. 解释:注意,最后一个目录名后面没有斜杠。
  5. 示例二
  6. 输入:path = "/../"
  7. 输出:"/"
  8. 解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。
  9. 示例三
  10. 输入:path = "/home//foo/"
  11. 输出:"/home/foo"
  12. 解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。
  13. 示例四
  14. 输入:path = "/a/./b/../../c/"
  15. 输出:"/c"

三、思路
本题采用栈这种数据结构来解题,首先应该先将字符串进行切割为数组,如果遇到"",则直接继续下一个。如果遇到..,则再进行判断是否栈中还存在元素,如果存在,则弹出栈顶元素,如果不存在,则继续下一个。剩下的就都是字符串了,此时直接将其push入栈中即可。最后再将栈中的元素拼接起来。
四、代码解析

  1. /**
  2. * @param {string} path
  3. * @return {string}
  4. */
  5. var simplifyPath = function (path) {
  6. let arr = path.split("/")
  7. let newArr = []
  8. arr.forEach(item => {
  9. if (item === "" || item === ".") {
  10. return
  11. } else if (item === "..") {
  12. if (newArr.length > 0) {
  13. newArr.pop()
  14. }else {
  15. return
  16. }
  17. } else {
  18. newArr.push(item)
  19. }
  20. })
  21. return "/" + newArr.join("/")
  22. };

五、总结

相关文章