📑 题目:71. 简化路径

🚀 本题 LeetCode 传送门

题目大意

给出一个 Unix 的文件路径,要求简化这个路径。这道题也是考察栈的题目。

解题思路

这道题笔者提交了好多次才通过,并不是题目难,而是边界条件很多,没考虑全一种情况就会出错。有哪些边界情况就看笔者的 test 文件吧。

代码

  1. package leetcode
  2. import (
  3. ""path/filepath""
  4. ""strings""
  5. )
  6. // 解法一
  7. func simplifyPath(path string) string {
  8. arr := strings.Split(path, ""/"")
  9. stack := make([]string, 0)
  10. var res string
  11. for i := 0; i < len(arr); i++ {
  12. cur := arr[i]
  13. //cur := strings.TrimSpace(arr[i]) 更加严谨的做法应该还要去掉末尾的空格
  14. if cur == "".."" {
  15. if len(stack) > 0 {
  16. stack = stack[:len(stack)-1]
  17. }
  18. } else if cur != ""."" && len(cur) > 0 {
  19. stack = append(stack, arr[i])
  20. }
  21. }
  22. if len(stack) == 0 {
  23. return ""/""
  24. }
  25. res = strings.Join(stack, ""/"")
  26. return ""/"" + res
  27. }
  28. // 解法二 golang 的官方库 API
  29. func simplifyPath1(path string) string {
  30. return filepath.Clean(path)
  31. }