পাইথনে স্ট্রিং রিভার্স করার জন্য কোনো বিল্ট-ইন ফাংশন নেই। তাই নিজেরা লজিক ইমপ্লিমেন্ট করতে হয়।
এই আর্টিকেলে স্ট্রিং রিভার্স করার বিভিন্ন পদ্ধতি দেখানো হবে।
FOR লুপ ব্যবহার করা
এই পদ্ধতির ইডিয়া হলো স্ট্রিং-এর লাস্ট ইনডেক্স থেকে 0-ইনডেক্স পর্যন্ত রিভার্স লুপ চালানো। প্রতিটি ইটারেশনে স্ট্রিং-এর ক্যারেক্টারগুলো নতুন স্ট্রিংয়ে যোগ করে শেষে রিভার্সড স্ট্রিং পাওয়া যায়।
সাধারণ প্রক্রিয়া:
a := নতুন স্ট্রিং (খালি)
লাস্ট ইনডেক্স থেকে 0-ইনডেক্স পর্যন্ত লুপ চালান, প্রতিবার ১ কমানো হয়: a = a + করেন্ট ইনডেক্সের ক্যারেক্টার
a রিটার্ন করুন
উদাহরণ
def reverse(s):
a = ""
last_index = len(s) - 1
for i in range(last_index, -1, -1):
a = a + s[i]
return a
string = "TutorialsPoint"
print(reverse(string))
আউটপুট
INPUT : TutorialsPoint OUTPUT : tnioPslairotuT
উপরোক্ত পদ্ধতির বুদ্ধিমান বাস্তবায়ন:
এখানে for-each লুপ ব্যবহার করে প্রতিটি ক্যারেক্টার নতুন স্ট্রিং-এর শুরুতে যোগ করা হয়। ক্যারেক্টারগুলো শুরুতে যোগ করলে রিভার্সড স্ট্রিং পাওয়া যায়। for-each লুপের বদলে 0 থেকে স্ট্রিং-এর দৈর্ঘ্য পর্যন্ত সাধারণ লুপও ব্যবহার করা যায়।
উদাহরণ
def reverse(s):
a = ""
for i in s:
a = i + a
return a
string = "TutorialsPoint"
print(reverse(string))
আউটপুট
INPUT : TutorialsPoint OUTPUT : tnioPslairotuT
WHILE লুপ ব্যবহার করা
for লুপের বদলে while লুপও ব্যবহার করা যায়। লাস্ট ইনডেক্স থেকে 0-ইনডেক্স পর্যন্ত while লুপ চালিয়ে প্রতিটি ক্যারেক্টার নতুন স্ট্রিংয়ে কনক্যাটেনেট করে রিভার্সড স্ট্রিং পাওয়া যায়।
উদাহরণ
def reverse(s):
a = ""
i = len(s) - 1
while i >= 0:
a = a + s[i]
i -= 1
return a
string = "TutorialsPoint"
print(reverse(string))
আউটপুট
INPUT : TutorialsPoint OUTPUT : tnioPslairotuT
এক্সটেন্ডেড স্লাইস সিনট্যাক্স (Extended Slice Syntax) ব্যবহার করা
এক্সটেন্ডেড স্লাইস সিনট্যাক্সের তিনটি প্যারামিটার রয়েছে: [start, end, step]। start এবং end খালি রেখে ডিফল্ট 0 এবং স্ট্রিং-এর দৈর্ঘ্য ধরা হয়। step হিসেবে '-1' দিলে শেষ থেকে শুরু পর্যন্ত পাওয়া যায়, অর্থাৎ রিভার্সড স্ট্রিং।
উদাহরণ
def reverse(s):
a = s[::-1]
return a
string = "TutorialsPoint"
print(reverse(string))
আউটপুট
INPUT : TutorialsPoint OUTPUT : tnioPslairotuT
join() এবং reversed() ব্যবহার করা
reversed() ফাংশন ব্যবহার করেও স্ট্রিং রিভার্স করা যায়। কিন্তু reversed() রিভার্সড ইটারেটর রিটার্ন করে। তাই ক্যারেক্টারগুলো join() দিয়ে স্ট্রিং-এ রূপান্তর করতে হয়।
উদাহরণ
def reverse(s):
a = "".join(reversed(s))
return a
string = "TutorialsPoint"
print(reverse(string))
আউটপুট
INPUT : TutorialsPoint OUTPUT : tnioPslairotuT
রিকার্শন (Recursion) ব্যবহার করা
রিকার্শন দিয়েও স্ট্রিং রিভার্স করা যায়। রিকার্সিভলি reverse ফাংশন কল করতে হবে স্ট্রিং-এর ১ নম্বর ইনডেক্স থেকে লাস্ট পর্যন্ত। এইভাবে স্ট্রিং-এর দৈর্ঘ্য ক্রমশই ০ এর দিকে কমবে যা বেইস কেস। প্রতিটি রিকার্সিভ কল স্ট্রিং-এর ১ নম্বর ইনডেক্স থেকে লাস্ট পর্যন্ত স্লাইস করে এবং প্রথম ক্যারেক্টারটি স্লাইসড স্ট্রিং-এর শেষে কনক্যাটেনেট করে।
উদাহরণ
def reverse(s):
if len(s) == 0:
return s
else:
return reverse(s[1:]) + s[0]
string = "TutorialsPoint"
print(reverse(string))
আউটপুট
INPUT : TutorialsPoint OUTPUT : tnioPslairotuT
এই ছিল পাইথনে স্ট্রিং রিভার্স করার পাঁচটি পদ্ধতি।
সবচেয়ে দ্রুত এবং সেরা পদ্ধতি কোনটি?
স্ট্রিং রিভার্স করার সবচেয়ে দ্রুত এবং সেরা পদ্ধতি হলো স্লাইসিং (পদ্ধতি ৩)। এটি সব পদ্ধতির চেয়ে দ্রুত ফলাফল দেয়। এটি বাস্তবায়ন করা খুব সহজ কারণ এতে শুধু ১ লাইন কোড লাগে এবং নিজের কোনো লজিক লিখতে হয় না।