ভূমিকা
একটি স্ট্রিং প্যালিনড্রোম (Palindrome) কিনা তা চেক করার জন্য স্ট্যাক (Stack) ডেটা স্ট্রাকচার ব্যবহার করা যায়। স্ট্যাকের LIFO (Last In First Out) প্রোপার্টি ব্যবহার করে স্ট্রিং রিভার্স করা হয় এবং মূল স্ট্রিংয়ের সাথে তুলনা করা হয়।
উদাহরণ কোড
class Stack_structure:
def __init__(self):
self.items = []
def check_empty(self):
return self.items == []
def push_val(self, data):
self.items.append(data)
def pop_val(self):
return self.items.pop()
my_instance = Stack_structure()
text_input = input('Enter the string... ')
for character in text_input:
my_instance.push_val(character)
reversed_text = ''
while not my_instance.check_empty():
reversed_text = reversed_text + my_instance.pop_val()
if text_input == reversed_text:
print("The string is a palindrome")
else:
print("The string isn't a palindrome")
আউটপুট
Enter the string... MalayalaM The string is a palindrome
ব্যাখ্যা
Stack_structureক্লাসেitemsলিস্ট,push_val(append),pop_val(pop),check_emptyমেথড আছে।ইনপুট স্ট্রিংর প্রতিটি ক্যারেক্টার স্ট্যাকে পুশ করা হয়।
তারপর স্ট্যাক খালি না হওয়া পর্যন্ত পপ করে রিভার্সড স্ট্রিং বানানো হয়।
মূল স্ট্রিং এবং রিভার্সড স্ট্রিং সমান কিনা চেক করা হয়। কেস-সেনসিটিভ (MalayalaM -> M...M, প্যালিনড্রোম)।
দ্রষ্টব্য ও উন্নতি
পাইথনে স্ট্রিং রিভার্স করা খুব সহজ:
text_input[::-1]। স্ট্যাক ব্যবহার শুধু লার্নিং উদ্দেশ্যে।কেস-ইনসেনসিটিভ চেকের জন্য
.lower()ব্যবহার করুন।স্পেস/পাঙ্কচুয়েশন ইগনোর করতে প্রি-প্রসেসিং করুন।