ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের অভিধানগতভাবে সবচেয়ে ছোট স্ট্রিংটি খুঁজে বের করতে হবে যেটি তৈরি করা যেতে পারে যদি আমরা প্রদত্ত স্ট্রিং s-এর দুটি অক্ষরের মধ্যে সর্বাধিক একটি অদলবদল করতে পারি।
সুতরাং, ইনপুট যদি "zyzx" এর মত হয়, তাহলে আউটপুট হবে "xyzz"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=s আকারের একটি অ্যারে এবং 0 দিয়ে পূরণ করুন
- m:=s - 1 এর আকার
- s -1 থেকে -1 রেঞ্জের আকারের i জন্য, 1 দ্বারা হ্রাস করুন, করুন
- যদি s[i]
- m :=i
- যদি s[i]
- temp[i] :=m
- 0 থেকে s আকারের রেঞ্জের জন্য,
- করুন
- a :=temp[i]
- যদি s[a] s[i] এর মত না হয়, তাহলে
- s এর সাবস্ট্রিং [সূচী 0 থেকে i পর্যন্ত] কনক্যাটেনেট s[a] s এর সাবস্ট্রিং [index i+1 থেকে a] concatenate s[i] s-এর সাবস্ট্রিং [index a+1 থেকে শেষ পর্যন্ত] li>
উদাহরণ
class Solution: def solve(self, s): temp = [0]*len(s) m=len(s)-1 for i in range(len(s)-1, -1, -1): if s[i]<s[m]: m=i temp[i] = m for i in range(len(s)): a = temp[i] if s[a] != s[i]: return s[:i]+s[a]+s[i+1:a]+s[i]+s[a+1:] return s ob = Solution() print(ob.solve("zyzx"))
ইনপুট
zyzx
আউটপুট
xyzz