LeetCode 71. Simplify Path
来源:互联网 发布:看图片的软件 编辑:程序博客网 时间:2024/06/01 23:57
1. 题目描述
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
click to show corner cases.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”.
2. 解题思路
这是一道字符串的处理问题, 拿到这个问题, 首先想到的使用栈结构进行处理, 而且通过分析, 我们知道, 我们所需要处理的内容主要分为 4 个部分:
/ , /. , 这两个部分可以直接忽略
/.. , 弹栈
/xx, 压栈
最后全部输出即可
3. code
class Solution {public: string simplifyPath(string path) { stack<string> mystack; int pos = 0, last = 0; string substr; while ((pos = path.find('/', last)) < (int)path.size()){ // 提取字串 if (pos == -1) substr = path.substr(last); else substr = path.substr(last, pos - last); // 处理 /. /.. / /xx if (substr == "" || substr == ".") ; else if (substr == ".."){ if (!mystack.empty()) mystack.pop(); } else{ mystack.push(substr); } if (pos == -1) break; last = pos + 1; } if (mystack.empty()) return "/"; string res; while (!mystack.empty()){ res = "/" + mystack.top() + res; mystack.pop(); } return res; }};
4. 大神解法
一样的思路, 不过借助stringstream 实现字符串分隔, so brilliant !!!
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;}
0 0
- LeetCode 71. Simplify Path
- LeetCode --- 71. Simplify Path
- [Leetcode] 71. Simplify Path
- [leetcode] 71.Simplify Path
- [leetcode] 71.Simplify Path
- Leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- Leetcode 71. Simplify Path
- 71. Simplify Path LeetCode
- leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- LeetCode 71. Simplify Path
- Leetcode 71. Simplify Path
- [leetcode] 71. Simplify Path
- LeetCode 71. Simplify Path
- LeetCode - 71. Simplify Path
- [LeetCode] 71. Simplify Path
- leetcode 71. Simplify Path
- C#开发WINCE系统的PDA程序,GetSystemMetrics获取屏幕长宽以达到自适应分辨率
- PLSQL_PROFILER
- iOS基础:NSArray常用方法
- 【Leetcode】:318. Maximum Product of Word Lengths 问题 in JAVA
- java程序中java对象存储和内存分配的原理?
- LeetCode 71. Simplify Path
- 不翻墙,利用国内源下载Android 源码
- Exercise(2):最大连续子序列和
- 专题二 1020
- Jsonp手机号查询Jquery格式
- hdu 2686(多线程dp)
- 立方尾不变
- React的优缺点
- leetcode——330——Patching Array