ধরুন আমাদের দুটি স্ট্রিং S এবং T আছে, আমাদের পরীক্ষা করতে হবে একই দৈর্ঘ্যের একটি স্ট্রিং যা অভিধানগতভাবে S এর থেকে বড় এবং T এর থেকে ছোট। যদি এমন কোনো স্ট্রিং পাওয়া না যায় তাহলে আমাদের -1 ফিরতে হবে। আমাদের মনে রাখতে হবে যে S =S1S2… Sn কে অভিধানিকভাবে T =T1T2 থেকে কম বলা হয়… Tn, যদি সেখানে একটি i থাকে, যাতে S1=T1, S2=T2, … Si – 1=Ti – 1, Si
সুতরাং, যদি ইনপুটটি S ="bbb" এবং T ="ddd" এর মত হয়, তাহলে আউটপুট হবে "bbc"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=স্ট্রিংয়ের আকার
- n - 1 থেকে 0 রেঞ্জের i এর জন্য, 1 কমিয়ে
- করুন
- যদি স্ট্রিং[i] 'z'-এর মতো না হয়, তাহলে
- k :=(স্ট্রিং[i]) এর ASCII
- স্ট্রিং[i] :=ASCII থেকে অক্ষর (k + 1)
- স্ট্রিং অক্ষর যোগ করুন এবং ফিরে আসুন
- স্ট্রিং[i] :='a'
- যদি স্ট্রিং[i] 'z'-এর মতো না হয়, তাহলে
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def find_next(string): n = len(string) for i in range(n - 1, -1, -1): if string[i] != 'z': k = ord(string[i]) string[i] = chr(k + 1) return ''.join(string) string[i] = 'a' S = "bbb" T = "ddd" S = list(S) res = find_next(S) if res != T: print(res) else: print(-1)
ইনপুট
"bbb", "ddd"
আউটপুট
bbc