Longest Consecutive Substring Of Certain Character Type In Python
Is there a pythonic way to find the length of the longest consecutive substring of a certain character type, for instance the length of the longest consecutive substrings of digits
Solution 1:
Regex and max
with length as the key:
In [12]: s = "43gfd54452jhg4fddsgf"
In [13]: max(re.findall(r'\d+', s), key=len) # digits
Out[13]: '54452'
In [14]: max(re.findall(r'\D+', s), key=len) # non-digits
Out[14]: 'fddsgf'
Similarly, you can change the Regex pattern to get your desired substring type.
Solution 2:
If there are always "**" between each substring. All you have to do is iterate over the different elements, keeping in a variable the longest substring you have found so far.
longest_letter = 0
longest_digit = 0for el in s.split("**"):
if(el.isalpha()):
len_letter = len(el)
if(len_letter > longest_letter):
longest_letter = len_letter
if(el.isdigit()):
len_digit = len(el)
if(len_digit > longest_digit):
longest_digit = len_digit
print (longest_letter)
print (longest_digit)
Post a Comment for "Longest Consecutive Substring Of Certain Character Type In Python"