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

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


मान लीजिए कि हमारे पास एक स्ट्रिंग S है, हमें लंबाई K के सबस्ट्रिंग्स की संख्या ज्ञात करनी है जहां कोई वर्ण दोहराया नहीं गया है। तो अगर एस ="हेफ्रेंडशोअरेयू" और के 5 है, तो आउटपुट 15 होगा, क्योंकि स्ट्रिंग्स [हेफ्र, आईफ्री, यफ्री, फ्रेन, रेन्ड, आईंड्स, एंडश, एनडीशो, डीशो, शोआ, होवर, ओवरे, वेरी, अरेयो हैं। , रेयू]

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

  • एक खाली नक्शा एम बनाएं, और बाएं:=0 और दाएं:=-1 और उत्तर:=0
  • जबकि दाएं <स्ट्रिंग की लंबाई - 1
    • यदि दाएँ - बाएँ + 1 =k, तो
      • उत्तरों को 1 से बढ़ाएँ
      • m[str[left]] को 1 से कम करें
      • बाएं 1 से बढ़ाएं
      • अगले पुनरावृत्ति के लिए जारी रखें
    • यदि str[right + 1] m में नहीं है, तो
      • सेट एम[str[दाएं + 1]]:=1
      • दाएं 1 से बढ़ाएं
    • अन्यथा यदि m[str[right + 1]] 0 है, तो
      • m[str[right + 1]] 1 से बढ़ाएं
      • दाएं 1 से बढ़ाएं
    • अन्य
      • m[str[left]] को 1 से कम करें
      • बाएं:=बाएं + 1
  • यदि दाएँ - बाएँ + 1 =k, तो उत्तर को 1 से बढ़ाएँ
  • वापसी उत्तर

उदाहरण

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

class Solution(object):
   def numKLenSubstrNoRepeats(self, S, K):
      m = {}
      left = 0
      right = -1
      ans = 0
      while right<len(S)-1:
         if right - left + 1 == K:
            ans+=1
            m[S[left]]-=1
            left+=1
            continue
         if S[right+1] not in m :
            m[S[right+1]]=1
            right+=1
         elif not m[S[right+1]]:
            m[S[right+1]]+=1
            right+=1
         else:
            m[S[left]]-=1
            left+=1
      if right - left + 1 == K:
         ans+=1
      return ans
ob1 = Solution()
print(ob1.numKLenSubstrNoRepeats("heyfriendshowareyou", 5))

इनपुट

"heyfriendshowareyou"
5

आउटपुट

"AIIOC"

  1. पायथन में एक स्ट्रिंग में पहला दोहराया शब्द खोजें?

    एक स्ट्रिंग दी गई है। हमारा काम दिए गए स्ट्रिंग में पहले दोहराए गए शब्द को ढूंढना है। इस समस्या को लागू करने के लिए हम पायथन संग्रह का उपयोग कर रहे हैं। संग्रह से, हम काउंटर () विधि प्राप्त कर सकते हैं। एल्गोरिदम Repeatedword(n) /* n is the string */ Step 1: first split given string separated by sp

  1. पाइथन में असामान्य वर्णों के साथ संयोजित स्ट्रिंग?

    यहां दो तार दिए गए हैं, पहले हमें पहली स्ट्रिंग से सभी सामान्य तत्व को हटाना होगा और दूसरी स्ट्रिंग के असामान्य वर्णों को पहली स्ट्रिंग के असामान्य तत्व के साथ जोड़ना होगा। उदाहरण Input >> first string::AABCD Second string:: MNAABP Output >> CDMNP एल्गोरिदम Uncommonstring(s1,s2) /* s1

  1. पाइथन के साथ केवल सोमवार की तारीख कैसे खोजें?

    आप अगले सोमवार की तारीख को Python की डेटाटाइम लाइब्रेरी और टाइमडेल्टा ऑब्जेक्ट के साथ आसानी से पा सकते हैं। आपको बस आज की तारीख लेने की जरूरत है। फिर उन दिनों की संख्या घटाएं जो इस सप्ताह पहले ही बीत चुके हैं (यह आपको अंतिम सोमवार मिलता है)। अंत में एक टाइमडेल्टा ऑब्जेक्ट का उपयोग करके इस तिथि में ए