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

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

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

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

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

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

उदाहरण कोड

बेहतर समझ के लिए निम्नलिखित इम्प्लीमेंटेशन देखें:

def get_final_pos(string):
    N = len(string)
    movement = [0] * N
    m = 0
    for i in range(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. - पायथन में स्ट्रिंग की लंबाई कैसे प्राप्त करें?

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

  1. - Python स्ट्रिंग्स में महारत हासिल करें: आवश्यक ऑपरेशन्स और सर्वोत्तम प्रथाएं

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