Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm chuỗi con chữ và chữ số liên tiếp dài nhất trong Python


Cho chuỗi 섞 chữ cái và chữ số, tìm chuỗi con liên tiếp chỉ chứa chữ cái dài nhất và chỉ chứa chữ số dài nhất.

Cách 1: Module re (Regular Expression)

Dùng re.findall(r'\D+', str) tìm các chuỗi chữ, re.findall(r'\d+', str) tìm chuỗi số, lấy max theo độ dài.

import re
def longSubstring(s):
    letter = max(re.findall(r'\D+', s), key=len)
    digit = max(re.findall(r'\d+', s), key=len)
    return letter, digit

s = 'Hello 459 Congratulations! 234'
print(longSubstring(s))  # (' Congratulations! ', '459')

Cách 2: Vòng lặp while + len()

Duyệt chuỗi, tích lũy chuỗi chữ và chuỗi số liên tiếp, cập nhật max.

def longSubstring(s):
    max_letterSeq = ''
    max_digitSeq = ''
    i = 0
    while i < len(s):
        current_letterSeq = ''
        current_digitSeq = ''
        while i < len(s) and s[i].isalpha():
            current_letterSeq += s[i]
            i += 1
        while i < len(s) and s[i].isdigit():
            current_digitSeq += s[i]
            i += 1
        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

s = 'Hello 459 Congratulations! 234'
print(longSubstring(s))  # ('Congratulations', '459')