Subcadena más larga sin repetir caracteres en Python

Rana Hasnain Khan 15 febrero 2024
  1. Subcadena más larga sin repetir caracteres en Python
  2. Use un bucle While para obtener la subcadena más larga en Python
  3. Use un bucle For y una instrucción If-Else para obtener la subcadena más larga en Python
Subcadena más larga sin repetir caracteres en Python

Presentaremos cómo hacer subcadenas en Python y cómo podemos hacer una subcadena sin repetir caracteres con ejemplos.

Subcadena más larga sin repetir caracteres en Python

En este tutorial, aprenderemos algo único que puede aumentar su conocimiento y hacer que sus bucles sean aún más perfectos. Aprenderemos cómo hacer subcadenas a partir de una cadena sin repetir caracteres.

La subcadena significa que si tenemos una cadena y la dividimos en varias partes pequeñas, se llamarán subcadenas de esa cadena específica. El método de la subcadena más larga es muy útil si queremos obtener la subcadena más larga que no repite los mismos alfabetos.

En este método, usaremos un ciclo que recorre la cadena completa, verifica cada elemento uno por uno y proporciona la subcadena no repetida de la cadena original.

En la programación de Python, existen muchos métodos para obtener la subcadena más larga. Estos métodos son muy simples y útiles; los discutiremos en detalle.

Use un bucle While para obtener la subcadena más larga en Python

Crearemos una clase GetLongestSubstring que tomará objeto como parámetro en este método. Definiremos una función llamada Longitud que tomará dos parámetros dentro de esta clase.

Pasaremos por el bucle while hasta que hayamos encontrado la subcadena más larga de la cadena dada.

# python
class GetLongestSubstring(object):
    def Length(self, x):
        a = 0
        b = 0
        c = {}
        sol = 0
        while b < len(x):
            if x[b] not in c or a > c[x[b]]:
                sol = max(sol, (b - a + 1))
                c[x[b]] = b
            else:
                a = c[x[b]] + 1
                sol = max(sol, (b - a + 1))
                b -= 1
            b += 1
        return sol


obj = GetLongestSubstring()
print(obj.Length("ABCDEFGABCGHIJKLMNO"))

Producción:

subcadena más larga usando while loop en python

Como puede ver en el ejemplo anterior, la subcadena más larga posible tiene una longitud de 12, igual que la subcadena ABCGHIJKLMNO de la cadena original.

Use un bucle For y una instrucción If-Else para obtener la subcadena más larga en Python

Intentaremos lograr el mismo escenario usando el bucle for. Primero, definiremos la función GetLongestSubstring como se muestra a continuación.

Esta función convertirá la cadena original en varias subcadenas y verificará si la subcadena es única o no. Como se muestra a continuación, esta función devolverá la subcadena más larga con su longitud.

# python
def GetLongestSubstring(x):
    if len(set(x)) == len(x):
        return len(x)
    Substring = ""
    StrLen = 1
    for a in x:
        if a not in Substring:
            Substring = Substring + a
            StrLen = max(StrLen, len(Substring))
        else:
            Substring = Substring.split(a)[1] + a
    print(Substring)
    return StrLen


print(GetLongestSubstring("ABCDEFGABCGHIJKLMNO"))

Producción:

subcadena más larga usando for loop en python

Como puede ver en la solución anterior, podemos obtener fácilmente la subcadena más larga de una cadena usando el bucle for con la instrucción if-else.

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

Artículo relacionado - Python String