मान लीजिए हमारे पास n संख्याओं का एक ऐरे A है, जहां A[i] एक स्ट्रिंग s के लंबाई (i+1) के प्रीफिक्स में विशिष्ट वर्णों की संख्या दर्शाता है, हमें लेक्सिकोग्राफिकली सबसे छोटी स्ट्रिंग ढूंढनी है जो दिए गए प्रीफिक्स ऐरे को संतुष्ट करती है। सभी वर्ण लोअरकेस अंग्रेजी वर्णमाला [a-z] होंगे। यदि ऐसी कोई स्ट्रिंग नहीं है तो -1 लौटाएं।
तो, यदि इनपुट A = [1,1,2,3,4] जैसा है, तो आउटपुट aabcd होगा क्योंकि प्रीफिक्स[0] में 1 विशिष्ट वर्ण है, प्रीफिक्स[1] में 1 विशिष्ट वर्ण है, प्रीफिक्स[2] में 2 विशिष्ट वर्ण हैं, प्रीफिक्स[3] में 3 विशिष्ट वर्ण हैं, प्रीफिक्स[4] में 4 विशिष्ट वर्ण हैं और स्ट्रिंग सबसे छोटी है।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := A का आकार
character := 'a'
string := खाली स्ट्रिंग
यदि n < 1 या A[0], 1 नहीं है, तो:
-1 लौटाएं
string := string + character
character := इस वर्तमान वर्ण का अगला वर्ण
i को 1 से n तक के लिए, करें:
difference := A[i] - A[i-1]
यदि difference > 1 या difference < 0 या A[i] > 26, तो:
-1 लौटाएं
अन्यथा जब difference, 0 के समान है, तो:
string := string + 'a'
अन्यथा,
string := string + character
character := इस वर्तमान वर्ण का अगला वर्ण
string लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def get_smallest_string(A): n = len(A) character = 'a' string = "" if (n < 1 or A[0] != 1): return -1 string += str(character) character = chr(ord(character) + 1) for i in range(1, n): difference = A[i] - A[i - 1] if (difference > 1 or difference < 0 or A[i] > 26): return -1 elif (difference == 0): string += 'a' else: string += character character = chr(ord(character) + 1) return string A = [1, 1, 2, 3, 4] print(get_smallest_string(A))
इनपुट
[1, 1, 2, 3, 4]
आउटपुट
aabcd