We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
71.简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix 中的绝对路径 vs 相对路径
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
示例 1: 输入:"/home/" 输出:"/home" 解释:注意,最后一个目录名后面没有斜杠。 示例 2: 输入:"/../" 输出:"/" 解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。 示例 3: 输入:"/home//foo/" 输出:"/home/foo" 解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。 示例 4: 输入:"/a/./b/../../c/" 输出:"/c" 示例 5: 输入:"/a/../../b/../c//.//" 输出:"/c" 示例 6: 输入:"/a//b////c/d//././/.." 输出:"/a/b/c"
https://leetcode-cn.com/problems/simplify-path
这题看似很复杂,但是其实用栈来做还是蛮简单的,先用 / 来分割路径字符串,然后不停的把分割后的有效值 push 到栈中即可,
/
注意的点:
'..'
'.'
''
..
/** * @param {string} path * @return {string} */ let simplifyPath = function (path) { let tokens = path.split("/") let stack = [] for (let index = 0; index < tokens.length; index++) { let token = tokens[index] if (token === "..") { if (stack.length > 0) { stack.pop() } } else if (!(token === "") && !(token === ".")) { stack.push(token) } } let res = "/" for (let token of stack) { res += `${token}/` } if (res !== "/") { res = res.substr(0, res.length - 1) } return res }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
71.简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix 中的绝对路径 vs 相对路径
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
https://leetcode-cn.com/problems/simplify-path
思路
这题看似很复杂,但是其实用栈来做还是蛮简单的,先用
/
来分割路径字符串,然后不停的把分割后的有效值 push 到栈中即可,注意的点:
'..'
、'.'
、''
这些特殊值以外的值。..
字符,说明要回退一级目录,把栈中弹出一个值即可。The text was updated successfully, but these errors were encountered: