Python | Encuentra la substring de dígitos y letras consecutivas más largas

Dada una string (que puede contener tanto letras como dígitos), escriba un programa en Python para encontrar la substring consecutiva más larga de letras y dígitos.

Ejemplos:

Input : geeks123available
Output : ('available', 123)

Input : 98apple658pine
Output : ('apple', 658)

 
Enfoque n.º 1: fuerza bruta
Este es el enfoque Naive o de fuerza bruta para encontrar la substring consecutiva de letras y dígitos más larga. Tomamos dos variables de tipo string más larga_letra y más_dígito . Iniciamos un ciclo y buscamos substrings consecutivas de letras y dígitos. En cada iteración, verificamos si la substring de letras actual es más larga que la substring de letras o dígitos más larga, respectivamente. En caso afirmativo, asignamos la substring actual de letras y dígitos a la substring de letras y dígitos más larga, respectivamente. De lo contrario, no hagas nada.

# Python3 program to find the longest 
# consecutive substring of a certain type
import re
  
def longestSubstring(s):
      
    longest_letterSeq = ''
    longest_digitSeq = ''
    i = 0
    while(i<len(s)):
          
        curr_letterSeq = ''
        curr_digitSeq = ''
          
        # For letter substring 
        while(i<len(s) and s[i].isalpha()):
            curr_letterSeq += s[i]
            i+= 1
  
        # For digit substring
        while(i<len(s) and s[i].isdigit()):
            curr_digitSeq += s[i]
            i+= 1
  
        # Case handling if the character 
        # is neither letter nor digit    
        if(i< len(s) and not(s[i].isdigit()) 
                     and not(s[i].isalpha())) :
            i+= 1
          
        if(len(curr_letterSeq) > len(longest_letterSeq) ):
            longest_letterSeq = curr_letterSeq
              
        if(len(curr_digitSeq) > len(longest_digitSeq) ):
            longest_digitSeq = curr_digitSeq
          
    return longest_letterSeq, longest_digitSeq
  
# Driver Code
str = '3Geeksfor123geeks3'
print(longestSubstring(str))
Producción:

('Geeksfor', '123')

 
Enfoque n.º 2: usar Python Regex
Python Regex es otro método para resolver el problema dado. Encuentre la secuencia de substring de dígitos y letras usando expresiones regulares de Python y luego busque la longitud de substring más larga respectivamente.

# Python3 program to find the longest 
# consecutive substring of a certain type
import re
  
def longestSubstring(str):
    letter = max(re.findall(r'\D+', str), key = len)
    digit = max(re.findall(r'\d+', str), key = len)
      
    return letter, digit
  
# Driver Code
str = 'geeks123geeksforgeeks1'
print(longestSubstring(str))
Producción:

('geeksforgeeks', '123')

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *