Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग खोजें जो पायथन में दी गई शर्त को पूरा करती है


मान लीजिए कि हमारे पास 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

  1. पायथन में एक स्ट्रिंग के लेक्सिकोग्राफिक रूप से सबसे बड़े पैलिंड्रोमिक बाद का पता लगाएं

    मान लीजिए कि हमारे पास एक स्ट्रिंग S है; हमें उस स्ट्रिंग के लेक्सिकोग्राफ़िक रूप से सबसे बड़े पैलिंड्रोमिक अनुक्रम का पता लगाना है। इसलिए, यदि इनपुट ट्यूटोरियल पॉइंटट्यूटोरियल जैसा है, तो आउटपुट यूयू होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - उत्तर:=रिक्त स्ट्रिंग max_val :=s[0]

  1. पायथन रेगेक्स का उपयोग करके किसी दिए गए स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो regexes का उपयोग करके एक स्ट्रिंग में 1(0+1) की सभी घटनाओं को ढूंढता है। . हमारे पास पायथन में एक री मॉड्यूल है जो हमें रेगुलर एक्सप्रेशन के साथ काम करने में मदद करता है। आइए एक नमूना मामला देखें। Input: string = "Sample 1(0+)1 string with

  1. पायथन रेगेक्स का उपयोग करके किसी दिए गए स्ट्रिंग में 10+1 के सभी पैटर्न खोजें

    हमें दिए गए स्ट्रिंग में रेगेक्स पैटर्न 10+1 खोजने की जरूरत है। इसके लिए हम पायथन में उपलब्ध री मॉड्यूल का उपयोग कर सकते हैं। इस पैकेज में फाइंड ऑल नामक एक विधि है जो रेगेक्स को स्वीकार करती है और जिस स्ट्रिंग को हम खोजना चाहते हैं। यह हमें उस स्ट्रिंग में पैटर्न की सभी घटनाओं को देता है। उदाहरण के