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))
('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))
('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