在 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')
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP