📜  Python|查找最长的连续字母和数字子串

📅  最后修改于: 2022-05-13 01:55:17.320000             🧑  作者: Mango

Python|查找最长的连续字母和数字子串

给定一个字符串(可能同时包含字母和数字),编写一个Python程序来查找最长的连续字母和数字子串。

例子:

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

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


方法#1:蛮力
这是寻找最长连续字母和数字子串的朴素或蛮力方法。我们采用两个字符串类型变量longest_letterlongest_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')