whatsapp sharing button Contacto youtube sharing button Canal instagram sharing button Contacto facebook sharing button Contacto email sharing button Contacto

Simplificar Ruta

LeetCode Español
Java | Python | PHP | C++ | JavaScript


Introducción

En este blog, te enseñaré cómo resolver el ejercicio Simplificar Ruta de la plataforma LeetCode en Java, Python, PHP, C++ y JavaScript. En este artículo, vamos a ver lo siguiente: ✅ Una explicación del problema ✅ Una solución eficiente ✅ Implementaciones en Java, Python, PHP, C++ y JavaScript

Problema

Dada ruta absoluta (que comienza con una barra diagonal '/') a un archivo al estilo Unix, conviértela a la ruta simplificada. En un sistema de archivos estilo Unix, un punto '.' se refiere al directorio actual, un punto doble '..' se refiere al directorio de un nivel superior, y cualquier barra diagonal múltiple consecutiva (es decir, '//') se trata como una sola barra diagonal '/'. Para este problema, cualquier otro formato de puntos como '...' se trata como nombres de archivos/directorios. simplify-path-leetcode-espanol

Pasos para realizar el ejercicio:

1.- Se divide la cadena de caracteres de la variable path en un array de palabras. 2.- Se crea una lista vacía llamada respuesta. 3.- Para cada palabra, se evalúan las siguientes condiciones: Si la palabra es "..", se elimina el último elemento de la lista de respuesta. Si la palabra no es vacía o ".", se agrega a la lista de respuesta. 4.- Se une la lista de respuesta con una barra diagonal "/" para formar la cadena de caracteres simplificada.



Código en Java

public class Solution {
    public String simplifyPath(String path) {
        //paso#1
        String[] palabras = path.split("/");
 
        //paso#2
        List<String> respuesta = new ArrayList<>();
 
        //paso#3
        for (String palabra : palabras) {
            //paso#3.1
            if (palabra.equals("..")) {
                if (!respuesta.isEmpty())  
                    respuesta.remove(respuesta.size() - 1);
                continue;
            }
 
             //paso#3.2
            if (!palabra.equals("") && !palabra.equals(".")) {
                respuesta.add(palabra);
            }
        }
 
        //paso#4
        return "/" + String.join("/", respuesta);
    }
}



Código en php

class Solution
{
    public function simplifyPath($path)
    {
        // Paso #1
        $palabras = explode('/', $path);
 
        // Paso #2
        $respuesta = [];
 
        // Paso #3
        foreach ($palabras as $palabra) {
            // Paso #3.1
            if ($palabra === '..') {
                if (!empty($respuesta)) {
                    array_pop($respuesta);
                }
                continue;
            }
 
            // Paso #3.2
            if ($palabra !== '' && $palabra !== '.') {
                $respuesta[] = $palabra;
            }
        }
 
        // Paso #4
        return '/' . implode('/', $respuesta);
    }
}



Código en Python

class Solution(object):
    def simplifyPath(self, path):
         # Paso #1
        palabras = path.split("/")
 
        # Paso #2
        respuesta = []
 
        # Paso #3
        for palabra in palabras:
            # Paso #3.1
            if palabra == "..":
                if respuesta:
                    respuesta.pop()
                continue
 
            # Paso #3.2
            if palabra != "" and palabra != ".":
                respuesta.append(palabra)
 
        # Paso #4
        return "/" + "/".join(respuesta)
 



Código en JavaScript

/**
 * @param {string} path
 * @return {string}
 */
var simplifyPath = function(path) {
    // Paso #1
  const palabras = path.split("/");
 
  // Paso #2
  const respuesta = [];
 
  // Paso #3
  for (const palabra of palabras) {
    // Paso #3.1
    if (palabra === "..") {
      if (!respuesta.length) {
        continue;
      }
      respuesta.pop();
      continue;
    }
 
    // Paso #3.2
    if (palabra !== "" && palabra !== ".") {
      respuesta.push(palabra);
    }
  }
 
  // Paso #4
  return "/" + respuesta.join("/");
};
        
    

Conclusión

En este blog, hemos visto cómo realizar el ejercicio Simplify Path en Java, Python, PHP, C++ y JavaScript. Hemos visto ejemplos de código en cada lenguaje de programación.

Foto de perfil

Autor: Hermes Sanchez
Fecha: 4 dic 2023


Artículos Relacionados