Skip to content
Related Articles

Related Articles

Improve Article
Python | Find longest consecutive letter and digit substring
  • Last Updated : 23 Feb, 2019

Given a String (may contain both letters and digits), write a Python program to find the longest consecutive letter and digit substring.

Examples:

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

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

 
Approach #1 : Brute force
This is the Naive or brute force approach to find the longest consecutive letter and digit substring. We take two string type variable longest_letter and longest_digit. We start a loop and check for consecutive substrings of letter and digit. In each iteration, we check if the current letter substring is longer than the longest letter or digit substring respectively. If yes, we assign the current substring of letter and digit to the longest letter and digit substring respectively. Otherwise, do nothing.




# 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))
Output:
('Geeksfor', '123')

 
Approach #2 : Using Python regex
Python Regex is another method to solve the given problem. Find the substring sequence of digits and letters using Python regex and then find the longest substring length respectively.






# 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))
Output:
('geeksforgeeks', '123')

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :