2022-3-19 Leetcode 71. 简化路径
第一版
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. 简化路径相关推荐
- LeetCode 71. 简化路径(栈)
1. 题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录 ...
- LeetCode —— 71.简化路径(Python3)
以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (-) 表示将目录切换到上一级( ...
- LeetCode 70爬楼梯71简化路径72编辑距离(dp)
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...
- LeetCode+ 71 - 75
简化路径 算法标签:栈.字符串 给我们一个路径,要求把文件路径化简,给定的路径一定是合法的 Linux 路径,一个合法的 Linux 路径一般从 / 开始,/ 表示根目录,有很多的子目录 home.y ...
- LeetCode 71~75
前言 本文隶属于专栏<LeetCode 刷题汇总>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕 ...
- LeetCode/LintCode 题解丨一周爆刷字符串:简化路径
描述 给定一个文件的绝对路径(Unix-style),请进行路径简化. Unix中, . 表示当前目录, - 表示父目录. 结果必须以 / 开头,并且两个目录名之间有且只有一个 /.最后一个目录名(如 ...
- LeetCode 71. Simplify Path
LeetCode 71. Simplify Path 本博客转载自:https://blog.csdn.net/makuiyu/article/details/44497901 Solution1:没 ...
- ida pro学习笔记2022.3.19
2022.3.19学习笔记 基本块:是一个不包含分支,从头执行到尾的最大指令序列.每个基本块,都有唯一的入口点(块中的第一条指令)和退出点(块中的最后一条指令). 基本块的第一条指令通常是分支指令的目 ...
- leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)
题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...
最新文章
- httpClient多线程请求
- curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
- Redis缓存穿透、缓存击穿和缓存雪崩
- 安装SQL SERVER 2000时提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
- 【C++】 类型转换
- Android顶部粘至视图具体解释
- python中的sorted是什么意思_python中sort与sorted区别
- java double add,Java中的DoubleStream.Builder add()方法
- ASP.NET MVC Action返回结果类型【转】
- 单词的理解 —— 通过上下文环境
- python爬虫爬取圆通快递信息
- mysql存储过程转义字符_mysql存储过程转义字符
- Jmeter 脚本中使用base64 加解密、MD5加密
- 移动应用开发 Android Studio安装教程
- 多少秒算长镜头_电影术语中长镜头是什么意思?
- 【Typora常用快捷键】
- 华为除了鸿蒙麒麟,除了麒麟 华为五个厉害的芯片你知道哪些
- Django验证码*短信验证码之2-容联云通讯短信平台(联云通讯短信平台介绍、容联云通讯Python SDK、封装发送短信单例类)
- Linux --指令 (四) rm 和 rmdir
- 通用数据打捞工具操作手册