কম্পিউটার টিউটোরিয়াল

পাইথনে স্ট্রিং থেকে সবচেয়ে লম্বা আক্ষরিক এবং সংখ্যাসূচক সাবস্ট্রিং বের করুন


সমস্যা বিবরণ

একটি স্ট্রিং আক্ষরিক এবং সংখ্যা মিশ্রিত হতে পারে। স্ট্রিং থেকে সবচেয়ে লম্বা একসাথে আক্ষরিক সাবস্ট্রিং এবং সবচেয়ে লম্বা একসাথে সংখ্যাসূচক সাবস্ট্রিং বের করতে হবে।

পদ্ধতি ১: re মডিউল ব্যবহার

re.findall(r'\D+', str) দিয়ে সব নন-ডিজিট সাবস্ট্রিং, re.findall(r'\d+', str) দিয়ে সব ডিজিট সাবস্ট্রিং বের করুন। তারপর max(..., key=len) দিয়ে সবচেয়ে লম্বা দুটি বের করুন।

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

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

পদ্ধতি ২: len() এবং 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
        # Skip non-alphanumeric
        if i < len(s) and not (s[i].isdigit() or 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_val = 'Hello 459 Congratulations! 234'
print(longSubstring(str_val))  # ('Congratulations', '459')
  1. পাইথনে বাইনারি ট্রির লংগেস্ট কনsekutিভ পথের দৈর্ঘ্য বের করার প্রোগ্রাম

  2. পাইথনে দিয়ে k সংখ্যক یونিক ক্যারেক্টার সম্বলিত দীর্ঘতম সাবস্ট্রিং খুঁজে বের করা

  3. পাইথনে লংগেস্ট কনসেকিউটিভ সিকোয়েন্স

  4. পাইথনে লองেস্ট প্যালিনড্রোমিক সাবস্ট্রিং (Longest Palindromic Substring)