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

पायथन में दी गई स्ट्रिंग में k अद्वितीय वर्णों वाला सबसे लंबा सबस्ट्रिंग खोजें


मान लीजिए हमारे पास एक स्ट्रिंग है हमें सबसे लंबा संभव सबस्ट्रिंग लौटाना है जिसमें ठीक k संख्या में अद्वितीय वर्ण हों, यदि सबसे लंबी संभव लंबाई के एक से अधिक सबस्ट्रिंग हैं, तो उनमें से कोई भी लौटाएं।

तो, यदि इनपुट s = "ppqprqtqtqt", k = 3 जैसा है, तो आउटपुट rqtqtqt होगा क्योंकि इसकी लंबाई 7 है।

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

  • N := 26

  • is_ok() फंक्शन परिभाषित करें। यह count, k लेगा।

  • val := 0

  • i को 0 से N तक के लिए, करें:

    • यदि count[i] > 0, तो:

      • val := val + 1

  • तब सच लौटाएं जब (k >= val)

  • मुख्य विधि से, निम्नलिखित करें:

  • unique := 0, size := s का आकार

  • count := आकार N का एक ऐरे, 0 से भरा हुआ

  • i को 0 से size तक के लिए, करें:

    • यदि s[i] की गिनती 0 के समान है, तो:

      • unique := unique + 1

    • s[i] की गिनती को 1 से बढ़ाएं

  • यदि unique < k, तो:

    • ऐसा कोई वर्ण नहीं है और बाहर निकलें

  • start := 0, end := 0

  • window_length := 1, window_start := 0

  • count := आकार N का एक ऐरे, 0 से भरा हुआ

  • s[0] की गिनती को 1 से बढ़ाएं

  • i को 1 से size तक के लिए, करें:

    • s[i] की गिनती को 1 से बढ़ाएं

    • end := end + 1

    • जब is_ok(count, k) गलत है, करें:

      • s[i] की गिनती को 1 से घटाएं

      • start := start + 1

    • यदि end-start+1 > window_length, तो:

      • window_length := end-start+1

      • window_start := start

  • s[window_start से window_start + window_length इंडेक्स तक] का सबस्ट्रिंग लौटाएं

उदाहरण

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

N = 26 def is_ok(count, k):    val = 0    for i in range(N):       if count[i] > 0:          val += 1    return (k >= val) def k_unique_chars(s, k):    unique = 0    size = len(s)    count = [0] * N    for i in range(size):       if count[ord(s[i])-ord('a')] == 0:          unique += 1       count[ord(s[i])-ord('a')] += 1    if unique < k:       return "Not sufficient characters"    start = 0    end = 0    window_length = 1    window_start = 0    count = [0] * len(count)    count[ord(s[0])-ord('a')] += 1    for i in range(1,size):       count[ord(s[i])-ord('a')] += 1       end+=1       while not is_ok(count, k):          count[ord(s[start])-ord('a')] -= 1          start += 1       if end-start+1 > window_length:          window_length = end-start+1          window_start = start    return s[window_start:window_start + window_length] s = "ppqprqtqtqt" k = 3 print(k_unique_chars(s, k))

इनपुट

"ppqprqtqtqt", 3

आउटपुट

rqtqtqt

  1. - पायथन में स्ट्रिंग्स की जोड़ी में मिलान वर्णों की संख्या गिनें

    हमें दो स्ट्रिंग्स दी गई हैं। हमें पहली स्ट्रिंग में उन वर्णों की गिनती ढूंढनी है जो दूसरी स्ट्रिंग में भी मौजूद हैं। set के साथ set फ़ंक्शन हमें स्ट्रिंग में सभी तत्वों के अद्वितीय मान देता है। हम & ऑपरेटर का भी उपयोग करते हैं जो दो दी गई स्ट्रिंग्स के बीच सामान्य तत्व ढूंढता है। उदाहरण strA = Tut

  1. - Python Regex का उपयोग करके दी गई स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखेंगे जो regexes का उपयोग करके स्ट्रिंग में 1(0+1) की सभी घटनाओं को ढूंढता है। हमारे पास Python में एक re मॉड्यूल है जो नियमित अभिव्यक्ति के साथ काम करने में हमारी मदद करता है।आइए एक नमूना केस देखें।इनपुट: string = Sample 1(0+)1 string with 1(0+)1 unnecessary pat

  1. - Python में String में Substring की nth Occurrence कैसे Find करें?

    Substring की nth Occurrence Find करना आप Substring पर Max n+1 Splits के साथ Split करके String में Substring की nth Occurrence Find कर सकते हैं। यदि Resulting List का Size n+1 से Greater है, तो इसका मतलब है कि Substring n से अधिक बार Occur होती है। इसका Index Simple Formula से पाया जा सकता है: Origi