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

पायथन में संश्लेषित स्ट्रिंग में किसी विशेष इंडेक्स पर अक्षर ढूंढना


मान लीजिए हमें एक स्ट्रिंग 'input_str' दी गई है। अब, हमें दी गई स्ट्रिंग से हर संभव सबस्ट्रिंग निर्धारित करने के लिए कहा गया है, फिर सभी सबस्ट्रिंग्स को लेक्सिकोग्राफिकल ऑर्डर में एक के बाद एक जोड़कर दूसरी स्ट्रिंग बनाना है। हमें एक पूर्णांक मान k भी दिया गया है। हमारा कार्य संयोजित स्ट्रिंग से इंडेक्स k पर अक्षर लौटाना है।

उदाहरण के लिए, यदि इनपुट है input_str = 'pqrs', k = 6, तो आउटपुट होगा p।

दी गई स्ट्रिंग से लेक्सिकोग्राफिकल ऑर्डर में सबस्ट्रिंग्स हैं: p, pq, pqr, pqrs, q, qr, qrs, r, rs, s।

यदि हम स्ट्रिंग्स को जोड़ते हैं, तो यह बन जाता है ppqpqrpqrsqqrqrsrrss। पोजीशन 6 पर अक्षर 'p' है (इंडेक्सिंग 0 से शुरू होती है)।

समाधान दृष्टिकोण

इस समस्या को स्टैक-आधारित डीपथ-फर्स्ट सर्च (DFS) का उपयोग करके हल किया जाता है जो लेक्सिकोग्राफिकल ऑर्डर में सबस्ट्रिंग्स उत्पन्न करता है बिना उन्हें स्पष्ट रूप से संग्रहीत किए।

  • एक स्टैक को खाली प्रीफिक्स और सभी प्रारंभिक इंडेक्स के साथ आरंभ करें।
  • जब तक स्टैक खाली नहीं है:
    • शीर्ष तत्व (pre, temp) को पॉप करें।
    • यदि k < len(pre), तो pre[k] लौटाएं।
    • k से len(pre) घटाएं।
    • शेष इंडेक्स के आधार पर संभावित अगले अक्षरों को सॉर्ट करें।
    • समान अक्षरों को समूहित करें और नए प्रीफिक्स के साथ स्टैक पर पुश करें।
  • यदि नहीं मिला तो None लौटाएं।

पायथन कार्यान्वयन

def solve(input_str, k):
    stk_list = [("", list(range(len(input_str))))]
    while stk_list:
        pre, temp = stk_list.pop()
        if k < len(pre):
            return pre[k]
        k -= len(pre)
        input_sorted = sorted([(input_str[i], i+1) for i in temp if i < len(input_str)], reverse=True)
        i = 0
        while i < len(input_sorted):
            val = input_sorted[i][0]
            temp1 = [input_sorted[i][1]]
            j = i + 1
            while j < len(input_sorted) and input_sorted[j][0] == val:
                temp1.append(input_sorted[j][1])
                j += 1
            stk_list.append((pre + val, temp1))
            i = j
    return None

print(solve('pqrs', 6))

इनपुट

'pqrs', 6

आउटपुट

p

  1. पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं जो 0 से n-1 तक क्रमांकित हैं। ग्राफ अनिर्देशित है और प्रत्येक किनारे का एक भार है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को

  1. - पायथन में अध्ययन का कुशल तरीका ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास तीन सूचियाँ हैं जिनकी लंबाई समान है: deadlines, credits, और durations। ये कोर्स असाइनमेंट दर्शाते हैं। i-वें असाइनमेंट के लिए deadlines[i] इसकी अंतिम तिथि, credits[i] इसका क्रेडिट, और durations[i] इसे पूरा करने में लगने वाले दिन हैं। एक असाइनमेंट को दूसरे से पहले पूरा करना होगा।

  1. - पायथन में दी गई स्ट्रिंग में पहले पुनरावर्ती वर्ण का इंडेक्स खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें उसमें पहले पुनरावर्ती वर्ण का इंडेक्स ढूंढना है। यदि कोई पुनरावर्ती वर्ण नहीं मिलता है, तो -1 वापस करें। उदाहरण के लिए, यदि इनपुट abcade है, तो आउटपुट 3 होगा, क्योंकि a फिर से इंडेक्स 3 पर मौजूद है। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: एक मैप