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

Python में समान अंत हटाने के बाद स्ट्रिंग की न्यूनतम लंबाई खोजने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें केवल तीन वर्ण 'a', 'b', और 'c' हैं। हम स्ट्रिंग पर निम्नलिखित एल्गोरिदम को कितनी भी बार लागू कर सकते हैं:

  • s से एक नॉन-खाली प्रीफिक्स चुनें जहां प्रीफिक्स के सभी वर्ण समान हों।
  • s से एक नॉन-खाली सफ़िक्स चुनें जहां सफ़िक्स के सभी वर्ण समान हों।
  • प्रीफिक्स और सफ़िक्स डिसजॉइंट हों।
  • प्रीफिक्स और सफ़िक्स के वर्ण समान होने चाहिए।
  • s से प्रीफिक्स और सफ़िक्स दोनों को हटा दें।

अंत में, हमें उपरोक्त ऑपरेशन को कितनी भी बार (संभवतः शून्य बार) करने के बाद s की न्यूनतम लंबाई ढूंढनी है।

उदाहरण के लिए, यदि इनपुट है s = "aabccabba", तो आउटपुट 3 होगा क्योंकि पहले हम prefix = "aa" और suffix = "a" चुन सकते हैं, तो हटाने के बाद स्ट्रिंग "bccabb" होगी, फिर prefix = "b" और suffix = "bb" चुनें, तो हटाने के बाद स्ट्रिंग "cca" होगी, जिसकी लंबाई 3 है।

समाधान के चरण

  1. s := s के साथ एक क्यू बनाएं
  2. while len(s) > 1 and s[0] == s[-1]:
    • chk := s[0]
    • while s and s[0] == chk:
      • s से बायां तत्व हटाएं
    • while s and s[-1] == chk:
      • s से अंतिम तत्व हटाएं
  3. len(s) वापस करें

उदाहरण

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

from collections import deque

def solve(s):
    s = deque(s)
    while len(s) > 1 and s[0] == s[-1]:
        chk = s[0]
        while s and s[0] == chk:
            s.popleft()
        while s and s[-1] == chk:
            s.pop()
    return len(s)

s = "aabccabba"
print(solve(s))

इनपुट

"aabccabba"

आउटपुट

3
  1. पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास रंगों (R, G, B) की एक लिस्ट है। अब यदि दो अलग-अलग रंग अगल-बगल हैं तो वे तीसरे रंग के एकल रंग आइटम में बदल सकते हैं। हमें किसी भी संभावित परिवर्तन अनुक्रम के बाद शेष सबसे छोटी संख्या ढूंढनी है।उदाहरण के लिए, यदि इनपुट colors = [G, R, G, B, R] है, तो आउटपुट 1 होगा क्योंकि यह नीचे द

  1. - पायथन में अद्वितीय वर्णों वाले संयोजित स्ट्रिंग की अधिकतम लंबाई ढूंढने का प्रोग्राम

    स्ट्रिंग्स की एक सूची words दी गई है। हमें शब्दों के एक उपअनुक्रम को संयोजित करके एक स्ट्रिंग बनानी है जिसमें प्रत्येक वर्ण अद्वितीय हो (कोई डुप्लिकेट नहीं)। ऐसे सबसे लंबे संयोजन की लंबाई वापस करनी है। उदाहरण इनपुट: words = [xyz, xyw, wab, cde] आउटपुट: 9 व्याख्या: हम xyz + wab + cde = xyzwabcde (लं

  1. - पायथन में लॉसी रन-लेंथ एन्कोडिंग की न्यूनतम लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s और एक मान k है। अब एक ऑपरेशन पर विचार करें जहां हम एक स्ट्रिंग पर रन-लेंथ एन्कोडिंग करते हैं जिसमें दोहराए गए क्रमिक वर्णों को एक गिनती और वर्ण के रूप में रखा जाता है। इसलिए यदि स्ट्रिंग aaabbc जैसी है तो इसे 3a2bc के रूप में एन्कोड किया जाएगा। यहां हम c के