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

पायथन में बिना दोहराव वाले वर्णों का सबसे लंबा सबस्ट्रिंग


मान लीजिए हमारे पास एक स्ट्रिंग है। हमें बिना वर्णों को दोहराए सबसे लंबा सबस्ट्रिंग ढूंढना है। इसलिए यदि स्ट्रिंग "ABCABCBB" जैसी है, तो परिणाम 3 होगा, क्योंकि लंबाई 3 का एक सबस्ट्रिंग है जो दोहरा रहा है। वह है "ABC"।

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

  • i := 0, j := 0 सेट करें, जानकारी स्टोर करने के लिए एक मैप सेट करें
  • ans := 0
  • जब तक j < स्ट्रिंग s की लंबाई
    • यदि s[j] मैप में मौजूद नहीं है, या i > map[s[j]], तो
      • ans := max(ans, j - i + 1)
      • map[s[j]] := j
    • अन्यथा
      • i := map[s[j]] + 1
      • ans := max(ans, j - i + 1)
      • j को 1 से घटाएं
    • j को 1 से बढ़ाएं
  • ans लौटाएं

उदाहरण (पायथन)

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

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        i = 0
        j = 0
        d = {}
        ans = 0
        while j < len(s):
            if s[j] not in d or i > d[s[j]]:
                ans = max(ans, (j-i+1))
                d[s[j]] = j
            else:
                i = d[s[j]] + 1
                ans = max(ans, (j-i+1))
                j -= 1
            # print(ans)
            j += 1
        return ans

ob1 = Solution()
print(ob1.lengthOfLongestSubstring("ABCABCBB"))

इनपुट

"ABCABCBB"

आउटपुट

3

  1. - पायथन में सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग

    मान लीजिए हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग ढूंढना है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है, तो सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग BAB है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: स्ट्रिंग की लंबाई के समान क्रम का

  1. - पायथन में ascii() फ़ंक्शन

    ASCII, American Standard Code for Information Interchange का संक्षिप्त रूप है। यह एक वर्ण एन्कोडिंग मानक है। उदाहरण के लिए अंग्रेजी वर्णमाला A का ASCII मान 65 है। पायथन किसी ऑब्जेक्ट का प्रिंट करने योग्य प्रतिनिधित्व प्राप्त करने के लिए यह फ़ंक्शन प्रदान करता है। यह एक पैरामीटर लेता है जो एक ऑब्जेक

  1. - SequenceMatcher का उपयोग करके सबसे लंबा सामान्य सबस्ट्रिंग खोजने का पायथन प्रोग्राम

    समस्या विवरण दो स्ट्रिंग्स दी गई हैं, हमारा कार्य सबसे लंबा सामान्य सब-स्ट्रिंग प्रिंट करना है। हम इस समस्या को पायथन में SequenceMatcher.find_longest_match() विधि का उपयोग करके हल करेंगे। क्लास difflib.SequenceMatcher किसी भी प्रकार के अनुक्रमों के जोड़े की तुलना के लिए एक लचीला वर्ग है, बशर्ते अनु