在 Python 中查找最长的连续字母和数字子字符串
给定的字符串可能是数字和字母的混合。在本文中,我们需要找到包含字母和数字的最大的子字符串。
使用 re 模块
正则表达式模块可用于查找所有包含数字或字母的连续子字符串。然后我们应用 max 函数仅选择在所有找到的子字符串中具有最大长度的字母和数字的连续子字符串。findall 函数也用于识别和获取所需的子字符串。
示例
import re def longSubstring(str): letter = max(re.findall(r'\D+', str), key=len) digit = max(re.findall(r'\d+', str), key=len) return letter, digit str = 'Hello 459 Congratulations! 234' print(longSubstring(str))
输出
运行以上代码将得到以下结果:
(' Congratulations! ', '459')
使用 len() 和 While 循环
这是一种直接但缓慢的方法,我们设计 While 循环来检查给定字符串中作为子字符串存在的数字和字母的长度。然后我们比较它们的长度,只选择长度最大的子字符串。
示例
def longSubstring(s): max_letterSeq = '' max_digitSeq = '' i = 0 while (i < len(s)): current_letterSeq = '' current_digitSeq = '' # Letters while (i < len(s) and s[i].isalpha()): current_letterSeq += s[i] i += 1 # Digits while (i < len(s) and s[i].isdigit()): current_digitSeq += s[i] i += 1 # Check if not digit or alphabet if (i < len(s) and not (s[i].isdigit()) and not (s[i].isalpha())): i += 1 if (len(current_letterSeq) > len(max_letterSeq)): max_letterSeq = current_letterSeq if (len(current_digitSeq) > len(max_digitSeq)): max_digitSeq = current_digitSeq return max_letterSeq, max_digitSeq str = 'Hello 459 Congratulations! 234' print(longSubstring(str))
输出
运行以上代码将得到以下结果:
('Congratulations', '459')
广告