码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 之Simplify Path(36)

时间:2016-05-26 10:11:06      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

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

技术分享
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)

标签:

原文地址:http://www.cnblogs.com/573177885qq/p/5529729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!