第一版

class Solution {public:string simplifyPath(string path) {vector<string> mysk;string ret;int i = 0;int len = path.size();while(i < len){int count = 0;int alpha = 0;string word;while(i < len && path[i] == '.'){count++;i++;}if(count == 2){if(!mysk.empty())mysk.pop_back();}else if(count > 2){mysk.push_back(string(count,'.'));}while(isalpha(path[i]) || path[i] == '_'){alpha++;i++;}word = path.substr(i-alpha,alpha);if(!word.empty())mysk.push_back(word);i++;}if(mysk.empty()){return "/";}for(i = 0;i < mysk.size();i++){ret += ("/" +mysk[i]);}return ret;}
};


第二版

class Solution {public:string simplifyPath(string path) {vector<string> mysk;string ret;int i = 0;int len = path.size();while(i < len){int count = 0;int alpha = 0;string word;while(i < len && path[i] == '.'){count++;i++;}if(count == 2 && (i == len || path[i] == '/')&& i > 2 && path[i-3] == '/'){if(!mysk.empty())mysk.pop_back();}else if(count > 2 && path[i] == '/'){mysk.push_back(string(count,'.'));}else if(count == 1 && (i == len || path[i] == '/')){}else {word += string(count,'.');}while(isalpha(path[i]) || path[i] == '_'){alpha++;i++;}word += path.substr(i-alpha,alpha);if(!word.empty())mysk.push_back(word);i++;}if(mysk.empty()){return "/";}for(i = 0;i < mysk.size();i++){ret += ("/" +mysk[i]);}return ret;}
};

第三版

class Solution {public:string simplifyPath(string path) {vector<string> mysk;string ret;while(!path.empty()){string word;int cur = path.find('/');if(cur == string::npos){word = path;}word = path.substr(0,cur);if(word == "."){word = "";//  }else if(word == ".." && !mysk.empty()){}else if(word == ".."){if(!mysk.empty())mysk.pop_back();word = "";}else if(!word.empty()){mysk.push_back(word);}path.erase(0,cur+1);if(cur == string::npos)break;}if(mysk.empty()){return "/";}for(int i = 0;i < mysk.size();i++){ret += ('/' + mysk[i]);}return ret;}
};

2022-7-19的一版

class Solution {public:string simplifyPath(string path) {deque<string> m_stack;int i = 0; int len = path.size();for (; i < len; i++){while (i < len && path[i] == '/') i++;int j = i;while (j < len && path[j] != '/') j++;string str = path.substr(i, j - i);if (str == ".."){if (!m_stack.empty())m_stack.pop_back();} else if (str != "" && str != "."){m_stack.push_back(str);}i = j;}string ans;while (!m_stack.empty()){ans += '/';string str = m_stack.front();m_stack.pop_front();ans += str;}return ans == "" ? "/" : ans;}
};

2022-3-19 Leetcode 71. 简化路径相关推荐

  1. LeetCode 71. 简化路径(栈)

    1. 题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录 ...

  2. LeetCode —— 71.简化路径(Python3)

    以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (-) 表示将目录切换到上一级( ...

  3. LeetCode 70爬楼梯71简化路径72编辑距离(dp)

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...

  4. LeetCode+ 71 - 75

    简化路径 算法标签:栈.字符串 给我们一个路径,要求把文件路径化简,给定的路径一定是合法的 Linux 路径,一个合法的 Linux 路径一般从 / 开始,/ 表示根目录,有很多的子目录 home.y ...

  5. LeetCode 71~75

    前言 本文隶属于专栏<LeetCode 刷题汇总>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕 ...

  6. LeetCode/LintCode 题解丨一周爆刷字符串:简化路径

    描述 给定一个文件的绝对路径(Unix-style),请进行路径简化. Unix中, . 表示当前目录, - 表示父目录. 结果必须以 / 开头,并且两个目录名之间有且只有一个 /.最后一个目录名(如 ...

  7. LeetCode 71. Simplify Path

    LeetCode 71. Simplify Path 本博客转载自:https://blog.csdn.net/makuiyu/article/details/44497901 Solution1:没 ...

  8. ida pro学习笔记2022.3.19

    2022.3.19学习笔记 基本块:是一个不包含分支,从头执行到尾的最大指令序列.每个基本块,都有唯一的入口点(块中的第一条指令)和退出点(块中的最后一条指令). 基本块的第一条指令通常是分支指令的目 ...

  9. leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)

    题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...

最新文章

  1. httpClient多线程请求
  2. curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
  3. Redis缓存穿透、缓存击穿和缓存雪崩
  4. 安装SQL SERVER 2000时提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
  5. 【C++】 类型转换
  6. Android顶部粘至视图具体解释
  7. python中的sorted是什么意思_python中sort与sorted区别
  8. java double add,Java中的DoubleStream.Builder add()方法
  9. ASP.NET MVC Action返回结果类型【转】
  10. 单词的理解 —— 通过上下文环境
  11. python爬虫爬取圆通快递信息
  12. mysql存储过程转义字符_mysql存储过程转义字符
  13. Jmeter 脚本中使用base64 加解密、MD5加密
  14. 移动应用开发 Android Studio安装教程
  15. 多少秒算长镜头_电影术语中长镜头是什么意思?
  16. 【Typora常用快捷键】
  17. 华为除了鸿蒙麒麟,除了麒麟 华为五个厉害的芯片你知道哪些
  18. Django验证码*短信验证码之2-容联云通讯短信平台(联云通讯短信平台介绍、容联云通讯Python SDK、封装发送短信单例类)
  19. Linux --指令 (四) rm 和 rmdir
  20. 通用数据打捞工具操作手册

热门文章

  1. 设计思维、精益、敏捷、DevOps的整合实践分享
  2. 8 赫斯曼网管软件industrial hivision多配置网络(软件升级和重启)
  3. 轻松解决外出旅游免费wifi上网问题
  4. 我在“下沉市场”生活的一个月(转)
  5. 新型的城市发展模式——智慧城市
  6. matlab图像去噪最好方法,基于MATLAB软件的图像去噪方法比较_王姣斐
  7. 查看附近WIFI的名称和mac
  8. 国内企业搭建网站为何不用WordPress?
  9. df多条件筛选踩的坑
  10. 【Unity3D】如何打开外部 exe 程序