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')