ধরুন আমাদের একটি স্ট্রিং S আছে, আমাদের বিপরীত স্ট্রিংটি খুঁজে বের করতে হবে যেখানে একটি অক্ষর নয় এমন সমস্ত অক্ষর তাদের অবস্থান পরিবর্তন করবে না এবং সমস্ত অক্ষর তাদের অবস্থানগুলিকে বিপরীত করবে। তাই যদি প্রদত্ত স্ট্রিংটি "a-bC-dEf-ghIj" হয়, তাহলে আউটপুট হবে "j-Ih-gfE-dCba"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- এটি সমাধান করতে আমরা রেগুলার এক্সপ্রেশন লাইব্রেরি ব্যবহার করব
- যদি S খালি হয়, তাহলে S ফেরত দিন
- str :=একটি খালি স্ট্রিং, index1 :=0 এবং index2 :=S – 1 এর দৈর্ঘ্য
- যখন index1
এর দৈর্ঘ্য- যদি index2>=0 এবং S[index1] বর্ণমালা হয় এবং S[index2] হয় বর্ণমালা
- str :=str + S[index2]
- index2 1 দ্বারা হ্রাস করুন এবং 1 দ্বারা index1 বাড়ান
- অন্যথায় যদি S[index1] বর্ণমালা হয় তাহলে index2 1 দ্বারা কমিয়ে দিন
- অন্যথায় যদি S[index1] বর্ণমালা না হয়, তাহলে str :=str + S[index1], index1 1 দ্বারা বাড়ান
- অন্যথায় সূচক2 1 দ্বারা হ্রাস করুন এবং 1 দ্বারা সূচক 1 বাড়ান
- যদি index2>=0 এবং S[index1] বর্ণমালা হয় এবং S[index2] হয় বর্ণমালা
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution: def reverseOnlyLetters(self, S): if not S: return S str_= "" index1 = 0 index2 = len(S)-1 while index1<len(S): #print(index1,index2) if index2>=0 and S[index1].isalpha() and S[index2].isalpha(): str_+=S[index2] index2 -= 1 index1 += 1 elif S[index1].isalpha(): index2-=1 elif not S[index1].isalpha(): str_+=S[index1] index1+=1 else: index2 -= 1 index1 += 1 return str_ ob1 = Solution() print(ob1.reverseOnlyLetters("a-bC-dEf-ghIj"))
ইনপুট
"a-bC-dEf-ghIj"
আউটপুট
"j-Ih-gfE-dCba"