Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หา Substring ต่อเนื่องของตัวอักษรและตัวเลขที่ยาวที่สุดใน Python

Longest Consecutive Letter/Digit Substring

กำหนดสตริงผสมตัวอักษรและตัวเลข หา Substring ต่อเนื่องที่เป็นตัวอักษรยาวที่สุด และตัวเลขยาวที่สุด

วิธีที่ 1: ใช้ Regular Expression (re)


import re
def long_substring(s):
    letters = max(re.findall(r'\D+', s), key=len)
    digits  = max(re.findall(r'\d+', s), key=len)
    return letters, digits

print(long_substring('Hello 459 Congratulations! 234'))
# (' Congratulations! ', '459')

วิธีที่ 2: ใช้ While Loop แบบ Manual


def long_substring_manual(s):
    max_letter = max_digit = ''
    i = 0
    while i < len(s):
        cur_letter = cur_digit = ''
        while i < len(s) and s[i].isalpha():
            cur_letter += s[i]; i += 1
        while i < len(s) and s[i].isdigit():
            cur_digit += s[i]; i += 1
        if i < len(s) and not s[i].isalnum():
            i += 1
        if len(cur_letter) > len(max_letter):
            max_letter = cur_letter
        if len(cur_digit) > len(max_digit):
            max_digit = cur_digit
    return max_letter, max_digit

print(long_substring_manual('Hello 459 Congratulations! 234'))
# ('Congratulations', '459')