Python|查找最长的连续字母和数字子串
给定一个字符串(可能同时包含字母和数字),编写一个Python程序来查找最长的连续字母和数字子串。
例子:
Input : geeks123available
Output : ('available', 123)
Input : 98apple658pine
Output : ('apple', 658)
方法#1:蛮力
这是寻找最长连续字母和数字子串的朴素或蛮力方法。我们采用两个字符串类型变量longest_letter和longest_digit 。我们开始一个循环并检查字母和数字的连续子串。在每次迭代中,我们分别检查当前字母子串是否比最长的字母或数字子串长。如果是,我们将当前字母和数字的子串分别分配给最长的字母和数字子串。否则,什么也不做。
# 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(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')
方法 #2:使用Python正则表达式
Python Regex 是解决给定问题的另一种方法。使用Python正则表达式找到数字和字母的子串序列,然后分别找到最长的子串长度。
# 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')