1. 概述

以 Unix 风格给出一个文件的绝对路径,将其转换为规范路径。

输入:”/a/./b/../../c/“ 输出:”/c”

2. 解题

  1. <?php
  2. class Solution {
  3. /**
  4. * @param String $path
  5. * @return String
  6. */
  7. public function simplifyPath($path) {
  8. $elements = explode('/', $path);
  9. if (!$elements) {
  10. return '';
  11. }
  12. $stack = new SplStack();
  13. foreach ($elements as $v) {
  14. if (!$v || $v == '.') {
  15. continue;
  16. }
  17. if ($v == '..') {
  18. if ($stack->isEmpty()) {
  19. return '';
  20. }
  21. $stack->pop();
  22. } else {
  23. $stack->push($v);
  24. }
  25. }
  26. $ret = '';
  27. while (!$stack->isEmpty()) {
  28. $ret = '/' . $stack->pop();
  29. }
  30. return $ret ?: '/';
  31. }
  32. }
  33. $path = "/a/./b/../../c/";
  34. $cls = new Solution();
  35. $r = $cls->simplifyPath($path);
  36. echo $r;