मान लीजिए कि हमारे पास n संख्याओं की एक सरणी A है, जहां A[i] एक स्ट्रिंग s की लंबाई (i + 1) के उपसर्ग में अलग-अलग वर्णों की संख्या को इंगित करता है, हमें यह करना होगा दी गई उपसर्ग सरणी को संतुष्ट करने वाली लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग खोजें। सभी अक्षर लोअरकेस अंग्रेजी अक्षर [a-z] होंगे। अगर ऐसी कोई स्ट्रिंग नहीं है तो -1 लौटें।
इसलिए, यदि इनपुट ए =[1,1,2,3,4] जैसा है, तो आउटपुट aabcd होगा क्योंकि उपसर्ग [0] में 1 अलग वर्ण है, उपसर्ग [1] में 1 अलग वर्ण है, उपसर्ग [2] इसमें 2 अलग-अलग वर्ण हैं, उपसर्ग [3] में 3 अलग-अलग वर्ण हैं, उपसर्ग [4] में 4 अलग-अलग वर्ण हैं और स्ट्रिंग सबसे छोटी है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
n :=A का आकार
-
वर्ण:='ए'
-
स्ट्रिंग :=रिक्त स्ट्रिंग
-
अगर n <1 या A[0] 1 नहीं है, तो
-
वापसी -1
-
-
स्ट्रिंग:=स्ट्रिंग कॉन्टेनेट कैरेक्टर
-
वर्ण :=इस वर्तमान वर्ण का अगला वर्ण
-
1 से n की सीमा में i के लिए, करें
-
अंतर:=ए[i] - ए[i - 1]
-
यदि अंतर> 1 या अंतर <0 या A[i]> 26, तो
-
वापसी -1
-
-
अन्यथा जब अंतर 0 के समान हो, तब
-
स्ट्रिंग:=स्ट्रिंग 'ए' को जोड़ना
-
-
अन्यथा,
-
स्ट्रिंग:=स्ट्रिंग कॉन्टेनेट कैरेक्टर
-
वर्ण :=इस वर्तमान वर्ण का अगला वर्ण
-
-
-
वापसी स्ट्रिंग
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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