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

पायथन में सबसे लंबा चंक्ड पालिंड्रोम विघटन


मान लीजिए हमारे पास एक टेक्स्ट है। हमें सबसे बड़ा संभव k ढूंढना है जैसे कि a[1], a[2], ..., a[k] मौजूद हों जैसे कि: प्रत्येक a[i] एक गैर-खाली स्ट्रिंग है; उनका संयोजन a[1] + a[2] + ... + a[k] दिए गए टेक्स्ट के बराबर है; 1 से k की रेंज में सभी i के लिए, a[i] = a[k+1-i]।

उदाहरण के लिए, यदि इनपुट "antaprezatepzapreanta" है, तो आउटपुट 11 होगा, क्योंकि हम इसे "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)" की तरह विभाजित कर सकते हैं।

हल करने के चरण

  • start := 0, end := टेक्स्ट की लंबाई - 1
  • temp1 और temp2 को खाली स्ट्रिंग से इनिशियलाइज़ करें
  • ans = 1 यदि टेक्स्ट की लंबाई विषम है, अन्यथा 0
  • जब तक start < end:
    • temp1 := temp1 + text[start]
    • temp2 := text[end] + temp2
    • यदि temp1, temp2 के बराबर है, तो:
      • temp1 और temp2 को खाली स्ट्रिंग सेट करें
      • ans := ans + 2
    • start := start + 1
    • end := end - 1
  • यदि टेक्स्ट की लंबाई सम है और (temp1 या temp2 खाली नहीं है):
    • ans := ans + 1
  • ans वापस करें

उदाहरण

class Solution(object):
    def longestDecomposition(self, text):
        start = 0
        end = len(text) - 1
        temp1 = ""
        temp2 = ""
        ans = 1 if len(text) & 1 else 0
        while start < end:
            temp1 += text[start]
            temp2 = text[end] + temp2
            if temp1 == temp2:
                temp1 = temp2 = ""
                ans += 2
            start += 1
            end -= 1
        if len(text) % 2 == 0 and (temp1 or temp2):
            ans += 1
        return ans

ob = Solution()
print(ob.longestDecomposition("antaprezatepzapreanta"))

इनपुट

"antaprezatepzapreanta"

आउटपुट

11
  1. - पायथन में वैध पालिंड्रोम

    मान लीजिए हमारे पास अल्फान्यूमेरिक मानों और प्रतीकों के साथ एक स्ट्रिंग है। लोअरकेस और अपरकेस अक्षर भी हैं। हमें जांचना है कि क्या स्ट्रिंग केवल लोअरकेस अक्षरों को ध्यान में रखते हुए पालिंड्रोम बना रही है या नहीं (अपरकेस को लोअरकेस में बदल दिया जाएगा), अन्य प्रतीकों जैसे कॉमा, स्पेस को नजरअंदाज किय

  1. - पायथन में सबसे लंबा सामान्य उपसर्ग

    मान लीजिए हमारे पास एक सरणी में स्ट्रिंग्स का एक समूह है। हमें सरणी में स्ट्रिंग्स के बीच सबसे लंबा सामान्य उपसर्ग ढूंढना है। यहां हम मान लेंगे कि सभी स्ट्रिंग्स लोअरकेस स्ट्रिंग्स हैं। और यदि कोई सामान्य उपसर्ग नहीं है, तो वापस करें। इसलिए यदि स्ट्रिंग्स की सरणी [school, schedule,scotland] जैसी ह

  1. - पायथन में पालिंड्रोम संख्या

    मान लीजिए हमारे पास एक पूर्णांक है। हमें जांचना है कि पूर्णांक पालिंड्रोम है या नहीं। यदि पूर्णांक आगे या पीछे दोनों क्रम में समान है, तो संख्या पालिंड्रोम है। उदाहरण के लिए, मान लीजिए संख्या 454 है, यदि हम इसे उल्टा करते हैं तो यह फिर से 454 होगी। तो यह पालिंड्रोम है। अब यदि संख्या -565 है, तो उल्