Leetcode 之Simplify Path(36)

Posted 牧马人夏峥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 之Simplify Path(36)相关的知识,希望对你有一定的参考价值。

主要看//之间的内容:如果是仍是/,或者是.,则忽略;如果是..,则弹出;否则压入堆栈。最后根据堆栈的内容进行输出。

string simplifyPath(string const& path)
      {
          vector<string> dirs;
          for (auto i = path.begin(); i != path.end();)
          {
              i++;
              auto j = find(i, path.end(), \'/\');
              auto dir = string(i, j);//注意用法

              if (!dir.empty() && dir != ".")//当有连续的///时dir为空
              {
                  if (dir == "..")
                  {
                      if (!dirs.empty())
                          dirs.pop_back();
                  }
                  else
                      dirs.push_back(dir);
              }
              i = j;
          }

          stringstream out;
          if (dirs.empty())
          {
              out << "/";
          }
          else
          {
              for (auto dir : dirs)
              {
                  out << \'/\' << dir;
              }
          }

          return out.str();
      }
View Code

 

以上是关于Leetcode 之Simplify Path(36)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode Simplify Path

leetcode 71 Simplify Path

Leetcode - Simplify Path

leetcode - Simplify Path

LeetCode 71. Simplify Path

Leetcode 71: Simplify Path