Lectura
simplificar el camino(Java, Python, PHP, Javascript)
Dada una ruta absoluta a un archivo, conviértela a la ruta simplificada.
- Un punto se refiere al directorio actual.
- Un punto doble se refiere al directorio de un nivel superior.
- Cualquier barra diagonal múltiple consecutiva (//) se trata como una sola barra diagonal '/'.
- Cualquier otro formato se trata como nombres de archivos.
Video
Código de la solución
Java
class Solution {
public String simplifyPath(String path) {
Deque<String> stack = new ArrayDeque<>();
String[] components = path.split("/");
for (String directory : components) {
if (directory.equals("") || directory.equals(".")) {
continue;
}
if (directory.equals("..")) {
if (!stack.isEmpty()) {
stack.pop();
}
} else {
stack.push(directory);
}
}
StringBuilder result = new StringBuilder();
for (String dir : stack) {
result.insert(0, "/" + dir);
}
return result.length() == 0 ? "/" : result.toString();
}
}
Python
class Solution(object):
def simplifyPath(self, path):
stack = []
components = path.split("/")
for directory in components:
if directory == "" or directory == ".":
continue
if directory == "..":
if stack:
stack.pop()
else:
stack.append(directory)
return "/" + "/".join(stack)
PHP
class Solution {
/**
* @param String $path
* @return String
*/
function simplifyPath($path) {
$stack = [];
$components = explode('/', $path);
foreach ($components as $directory) {
if ($directory === '' || $directory === '.') {
continue;
}
if ($directory === '..') {
if (!empty($stack)) {
array_pop($stack);
}
} else {
array_push($stack, $directory);
}
}
return '/' . implode('/', $stack);
}
}
JavaScript
/**
* @param {string} path
* @return {string}
*/
var simplifyPath = function(path) {
const stack = [];
const components = path.split('/');
for (const directory of components) {
if (directory === '' || directory === '.') {
continue;
}
if (directory === '..') {
if (stack.length > 0) {
stack.pop();
}
} else {
stack.push(directory);
}
}
return '/' + stack.join('/');
};
Si te gustó el contenido, ¡visita mi canal de YouTube para ver más explicaciones sobre algoritmos y estructuras de datos!