• 71. Simplify Path


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

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

    In a UNIX-style file system, a period ('.') refers to the current directory, so it can be ignored in a simplified path. Additionally, a double period ("..") moves up a directory, so it cancels out whatever the last directory was. For more information, look here: https://en.wikipedia.org/wiki/Path_(computing)#Unix_style

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

    AC code:

    class Solution {
    public:
        string simplifyPath(string path) {
            string res, tmp;
            vector<string> stk;
            stringstream ss(path);
            while(getline(ss,tmp,'/')) {
                if (tmp == "" or tmp == ".") continue;
                if (tmp == ".." and !stk.empty()) stk.pop_back();
                else if (tmp != "..") stk.push_back(tmp);
            }
            for(auto str : stk) res += "/"+str;
            return res.empty() ? "/" : res;
        }
    };
    
    Runtime: 4 ms, faster than 99.84% of C++ online submissions for Simplify Path.
    Get line from stream into string

    Extracts characters from is and stores them into str until the delimitation character delim is found (or the newline character, ' ', for (2)).

    The extraction also stops if the end of file is reached in is or if some other error occurs during the input operation.

    If the delimiter is found, it is extracted and discarded (i.e. it is not stored and the next input operation will begin after it).

    Note that any content in str before the call is replaced by the newly extracted sequence.

    Each extracted character is appended to the string as if its member push_back was called.

    Parameters

    is
    istream object from which characters are extracted.
    str
    string object where the extracted line is stored.
    The contents in the string before the call (if any) are discarded and replaced by the extracted line.

    2. string和stringstream用法总结

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    中兴ZTE ZXV10 H618B超级密码
    星际1.08下载绝对能玩
    cs脚本
    关于JIRA4.3.3破解的问题,为什么我的就可以破解成功
    Jquery DataTables学习笔记(一)
    如何利用System.Net.Mail类发送EMAIL
    IE鼠标右键查看源文件失效解决办法
    ServU FTP Server远程/本地提升权限
    Laravel的homestead安装
    编程总结3
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9833262.html
Copyright © 2020-2023  润新知