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

পাইথনে প্যালিনড্রোম স্ট্রিং চেক করা


প্যালিনড্রোম কী?

যে স্ট্রিংটি উল্টো পড়লেও একই থাকে (কেস-ইনসেনসিটিভ, স্পেস/পাঙ্কচুয়েশন বাদ দিয়ে)।

সহজ পদ্ধতি: স্লাইসিং


def is_palindrome(s):
    return s == s[::-1]

# টেস্ট
print(is_palindrome("madam"))      # True
print(is_palindrome("python"))     # False
print(is_palindrome("racecar"))    # True

উন্নত সংস্করণ (কেস-ইনসেনসিটিভ, অ্যালফানিউমেরিক মাত্র)


import re

def is_palindrome_advanced(s):
    # শুধু অ্যালফানিউমেরিক রেখে লোয়ারকেস
    cleaned = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
    return cleaned == cleaned[::-1]

# টেস্ট
tests = [
    "madam",
    "A man, a plan, a canal: Panama",
    "racecar",
    "hello",
    "Was it a car or a cat I saw?"
]

for t in tests:
    print(f"'{t}' -> {is_palindrome_advanced(t)}")

আউটপুট

'madam' -> True
'A man, a plan, a canal: Panama' -> True
'racecar' -> True
'hello' -> False
'Was it a car or a cat I saw?' -> True

ইন্টারঅ্যাক্টিভ ভার্সন


def main():
    user_input = input("Enter a string: ")
    if is_palindrome_advanced(user_input):
        print("The string is a palindrome")
    else:
        print("The string isn't a palindrome")

if __name__ == "__main__":
    main()

অ্যালগরিদমিক পদ্ধতি (দুই পয়েন্টার)


def is_palindrome_two_pointer(s):
    left, right = 0, len(s) - 1
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True

O(n) টাইম, O(1) স্পেস (স্ট্রিং কপি ছাড়া) — বড় স্ট্রিংয়ের জন্য দক্ষ।

  1. দেওয়া স্ট্রিংটি ভয়েল প্যালিনড্রোম কিনা চেক করার পাইথন প্রোগ্রাম

  2. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম

  3. পাইথনে স্ট্রিং খালি কিনা চেক করা

  4. পাইথনে বাক্য প্যাংগ্রাম (pangram) কিনা যাচাই করার প্রোগ্রাম