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

पायथन में संशोधन के बाद स्ट्रिंग की अंतिम स्थिति

मान लीजिए कि हमारे पास एक स्ट्रिंग S है। लंबाई n है। एक दूसरे से सटे ये n बॉक्स, I स्थिति में एक वर्ण R दर्शाता है कि i-th बॉक्स को दाईं ओर धकेला जा रहा है। इसी तरह, I स्थिति में L यह दर्शाता है कि i-वें बॉक्स को बाईं ओर धकेला जा रहा है, एक बिंदु '।' रिक्त स्थान को इंगित करता है। प्रारंभिक विन्यास से शुरू होकर, हर समय इकाई में, एक बॉक्स को दाईं ओर धकेला जा रहा है, अगले बॉक्स को दाईं ओर धकेलने में सक्षम है, वही क्रिया बाईं ओर भी लागू की जा सकती है। हमें सभी बक्सों की अंतिम स्थिति का पता लगाना होगा, जब कोई और हलचल संभव न हो।

इसलिए, यदि इनपुट R..R...L. जैसा है, तो आउटपुट RRRRR.LL.

होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • N :=स्ट्रिंग का आकार
  • आंदोलन:=आकार N की सरणी, 0s से भरें
  • एम :=0
  • मैं के लिए 0 से N की सीमा में, करते हैं
    • यदि स्ट्रिंग [i] 'R' के समान है, तो
      • एम:=एन
    • अन्यथा जब स्ट्रिंग [i] 'L' के समान हो, तो
      • एम :=0
    • अन्यथा,
      • m :=अधिकतम m-1, 0
    • आंदोलन[i] :=आंदोलन[i] + मी
  • एम :=0
  • एन -1 से -1 की श्रेणी में i के लिए, 1 से घटाएं
    • यदि स्ट्रिंग [i] 'L' के समान है, तो
      • एम:=एन
    • अन्यथा जब string[i] 'R' के समान हो, तब
      • एम :=0
    • अन्यथा,
      • m :=अधिकतम m-1, 0
    • आंदोलन[i] :=आंदोलन[i] - मी
  • यदि m 0 है तो डॉट जोड़कर एक स्ट्रिंग बनाएं अन्यथा 'R' जब m> 0, अन्यथा प्रत्येक तत्व m के लिए 'L' गति में है।

उदाहरण कोड

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def get_final_pos(string):
   N = len(string)
   movement = [0] * N
   m = 0
   for i in range(0, N):
      if string[i] == 'R':
         m = N
      elif string[i] == 'L':
         m = 0
      else:
         m = max(m - 1, 0)
      movement[i] += m
   m = 0
   for i in range(N - 1, -1, -1):
      if string[i] == 'L':
         m = N
      elif string[i] == 'R':
         m = 0
      else:
         m = max(m - 1, 0)
      movement[i] -= m
return "".join('.' if m == 0 else 'R' if m > 0 else 'L' for m in movement)
print(get_final_pos('R..R...L.'))

इनपुट

'R..R...L.'

आउटपुट

RRRRR.LL.

  1. पायथन प्रोग्राम यह जाँचने के लिए कि क्या दिया गया स्ट्रिंग पैंग्राम है

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक स्ट्रिंग इनपुट को देखते हुए, हमें यह जांचने के लिए एक पायथन प्रोग्राम जेनरेट करना होगा कि वह स्ट्रिंग पंग्राम है या नहीं। पंग्राम एक वाक्य/शब्दों की श्रृंखला है जिसमें अंग्रेजी अक्षर संग्रह मे

  1. पायथन में एक स्ट्रिंग की लंबाई कैसे प्राप्त करें?

    पायथन में लेन () नामक एक विधि है जो हमें किसी भी समग्र वस्तु की लंबाई देती है। एक स्ट्रिंग की लंबाई प्राप्त करने के लिए, बस स्ट्रिंग को लेन () कॉल पर पास करें। उदाहरण के लिए, print(len('abcdefghijklmnopqrstuvwxyz')) आउटपुट 26

  1. पायथन स्ट्रिंग्स - बेसिक स्ट्रिंग ऑपरेशंस का अवलोकन

    स्ट्रिंग्स पायथन में बुनियादी डेटा प्रकारों में से एक है। पायथन स्ट्रिंग्स अक्षरों, अंकों और अन्य विशेष वर्णों से बने वर्णों की संख्या का एक संयोजन है। इस ट्यूटोरियल में, आप सीखेंगे कि विभिन्न परिदृश्यों में उन्हें कैसे बनाना, हेरफेर करना और उनका उपयोग करना है। पायथन में नई स्ट्रिंग बनाएं एक नया पा