第一版

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. JAVA 线上故障排查完整套路!牛掰!
  2. 【动态规划、计算几何】最优三角剖分
  3. Java(CS)请求分流
  4. 【DIY】200521近期在做的项目小结,DIY进展汇报
  5. html中下拉列表监听事件,ExtJS 下拉框监听事件、日期选择器监听事件、实现动态给items添加删除数据...
  6. redis 配置允许其他主机可以远程连接redis
  7. java 单开程序_java生成jar包并且单进程运行的实例
  8. 解决:-bash: telnet: command not found
  9. 17R-无重复数字的三位数和去重后最大数
  10. Oracle ERP简介
  11. 【C】输出乘法口诀表
  12. 18年韩师插本c语言的题答案,插本全能题库
  13. Unity3d游戏开发用哪个语言更好?
  14. 关于Linux消息队列的简单说明、使用、编码
  15. 会议OA项目排座功能以及送审功能
  16. 程序员通病:小厂薪资低,想跳槽,又担心面试过不了!
  17. 编译MapGuide
  18. 手机QQ视频图像是反的——解决办法
  19. java 案例写作_用Java编写一个银行转账案例
  20. c 语言10个数首尾连接,相邻4个和,西安交通大学18年9月课程考试《计算机控制技术》作业考核试题答案...

热门文章

  1. 立创开源丨基于CH340C的STC三口双电压自动冷启动自动下载器
  2. Qt Qbs | 配置cpp版本、cpp11、cpp17
  3. LabVIEW灰度图像操作与运算(基础篇—2)
  4. python赋值语句(解包赋值、多目标赋值及共享引用)
  5. Why YY:腾讯负责复制一切 YY负责复制腾讯
  6. 朗诵素材-《少年正是读书时》
  7. Keepalived负载均衡
  8. Unity-Slider调节音量大小功能
  9. 【工具】fis3 - 使用教程(02)
  10. 奥维地图数据格式_奥维互动地图导入df文件说明