zoukankan      html  css  js  c++  java
  • [LeetCode]Simplify Path

    题目描述:(链接)

    Given an absolute path for a file (Unix-style), simplify it.

    For example,
    path = "/home/", => "/home"
    path = "/a/./b/../../c/", => "/c"

    click to show corner cases.

    Corner Cases:
    • Did you consider the case where path = "/../"?
      In this case, you should return "/".
    • Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
      In this case, you should ignore redundant slashes and return "/home/foo".
    解题思路:
    用栈。
     1 class Solution {
     2 public:
     3     string simplifyPath(string path) {
     4         vector<string> cache;
     5         for (auto i = path.begin(); i != path.end();) {
     6             ++i;
     7             auto j = find(i, path.end(), '/');
     8             auto sub = string(i, j);
     9             if (sub.size() > 0 && sub != ".") {
    10                 if (sub == "..") {
    11                     if (!cache.empty()) {
    12                         cache.pop_back();
    13                     }
    14                 } else {
    15                     cache.push_back(sub);
    16                 }
    17             }
    18             i = j;
    19         }
    20         
    21         
    22         if (cache.empty()) {
    23             return string("/");
    24         }
    25         
    26         string result;
    27         for (auto str : cache) {
    28             result += "/";
    29             result += str;
    30         }
    31         
    32         return result;
    33     }
    34 };
     
  • 相关阅读:
    第一阶段冲刺第五天
    第一阶段冲刺第四天
    构建之法阅读笔记03
    第一阶段冲刺第三天
    第一阶段冲刺第二天
    第十一周进度
    第一阶段意见评论
    第十周进度
    第九周进度
    人月神话阅读笔记03
  • 原文地址:https://www.cnblogs.com/skycore/p/4971683.html
Copyright © 2011-2022 走看看