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

    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".

    Summary: Very careful about corner cases, like "/", "/.", "..". 

     1 class Solution {
     2 public:
     3     void handleEntry(vector<string> &path_stack, string path_entry) {
     4         if(path_entry == "..") {
     5             if(path_stack.size() > 0)
     6                 path_stack.pop_back();
     7         }else if (path_entry != ".") 
     8                 path_stack.push_back(path_entry);
     9     }
    10     
    11     string simplifyPath(string path) {
    12         string simple_path;
    13         if(path.size() == 0)
    14             return simple_path;
    15         vector<string> path_stack;
    16         string path_entry;
    17         for(int i = 0; i < path.size(); i ++) {
    18             if(path_entry.size() == 0 && path[i] == '/'){
    19                 continue;
    20             }else if (path_entry.size() != 0 && path[i] == '/') {
    21                 handleEntry(path_stack, path_entry);
    22                 path_entry.clear();
    23             }else {
    24                 path_entry.push_back(path[i]);
    25             }
    26         }
    27         if(path_entry.size() > 0)
    28             handleEntry(path_stack, path_entry);
    29     
    30         for(string item: path_stack) {
    31             simple_path += "/";
    32             simple_path += item;
    33         }
    34         if(simple_path.size() == 0)
    35             return "/";
    36         return simple_path;
    37     }
    38 };
  • 相关阅读:
    程序保护机制
    ubuntu单独安装DDMS
    Linux Syste m Call Table
    任意程序添加ShellCode
    解析结构化异常处理(SEH)(第一部分)
    CONTEXT(线程结构体)
    WINNT.H
    Html的空格显示
    随机变量的联合分布
    期望和期望的性质
  • 原文地址:https://www.cnblogs.com/guyufei/p/3394083.html
Copyright © 2011-2022 走看看