• leetcode 71 Simplify Path


    题目连接

    https://leetcode.com/problems/simplify-path/ 

    Simplify Path

    Description

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

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

    简化linux文件路径,”.”代表当前目录,”..”代表上级目录 
    大体做法:先把path按’/’符分割保存起来(由于c++ string没有split函数,自己写一个吧) 
    再把切割后的字符串扫一遍即可。 
    具体如下

    class Solution {
    public:
        string simplifyPath(string path) {
            string ans;
            if(path.empty()) return ans;
            auto split = [=](char sep = '/')->vector<string> {
                string temp;
                vector<string> res;
                size_t start = 0, end = 0;
                while((end = path.find(sep, start)) != string::npos) {
                    temp = path.substr(start, end - start);
                    if(temp != "") res.emplace_back(temp);
                    start = end + 1;
                }
                temp = path.substr(start);
                if(temp != "") res.emplace_back(temp);
                return res;
            };
            vector<string> res = split();
            vector<string> stk;
            for(auto &r: res) {
                if(r ==".") continue;
                else if(r == "..") {
                    if(!stk.empty()) stk.pop_back();
                } else {
                    stk.push_back(r);
                }
            }
            if(stk.empty()) {
                ans.push_back('/');
            } else {
                for(auto &r: stk) {
                    ans.push_back('/');
                    ans += r;
                }
            }
            return ans;
        }
    };
  • 相关阅读:
    清除缓存
    框架更新 (简)
    Xutils简
    动画
    夜间模式
    TabLoaout简单框架
    atomic原子类的理解
    单例模式中指令重排序及需要使用volatile的理解
    对volatile的理解
    jvm内存模型及垃圾回收GC
  • 原文地址:https://www.cnblogs.com/GadyPu/p/5599045.html
Copyright © 2020-2023  润新知