समस्या विवरण
दो स्ट्रिंग्स S और T दी गई हैं, समान लंबाई की एक स्ट्रिंग ढूंढें जो लेक्सिकोग्राफिकली S से बड़ी और T से छोटी हो। यदि नहीं मिले तो -1 वापस करें।
उदाहरण
इनपुट: S = "bbb", T = "ddd"
आउटपुट: "bbc"
एल्गोरिदम
Sको लिस्ट में बदलें- दाएं से बाएं (
n-1से 0):- यदि
S[i] != 'z':S[i] = chr(ord(S[i]) + 1)- दाएं के सभी को 'a' पर सेट करें (वैकल्पिक, लेकिन अगला स्ट्रिंग बनाने के लिए)
- जोड़कर वापस करें
S[i] = 'a'
- यदि
- यदि परिणाम
Tनहीं है, तो प्रिंट करें, अन्यथा -1
पायथन कार्यान्वयन
def find_next(string):
n = len(string)
for i in range(n-1, -1, -1):
if string[i] != 'z':
string[i] = chr(ord(string[i]) + 1)
return ''.join(string)
string[i] = 'a'
return None
S = "bbb"
T = "ddd"
S = list(S)
res = find_next(S)
if res != T:
print(res)
else:
print(-1)
इनपुट
"bbb", "ddd"
आउटपुट
bbc