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

पायथन में दो से अधिक स्ट्रिंग्स से सबसे लंबे समय तक सामान्य सबस्ट्रिंग कैसे खोजें?


सबसे लंबे सामान्य सबस्ट्रिंग एल्गोरिथम के लिए सामान्य गतिशील प्रोग्रामिंग कार्यान्वयन O(nm) समय में चलता है। निम्नलिखित सबसे लंबे सामान्य सबस्ट्रिंग एल्गोरिथम का कार्यान्वयन है:

उदाहरण

def longest_common_substring(s1, s2):
   m = [[0] * (1 + len(s2)) for i in xrange(1 + len(s1))]
   longest, x_longest = 0, 0
   for x in xrange(1, 1 + len(s1)):
       for y in xrange(1, 1 + len(s2)):
           if s1[x - 1] == s2[y - 1]:
               m[x][y] = m[x - 1][y - 1] + 1
               if m[x][y] > longest:
                   longest = m[x][y]
                   x_longest = x
           else:
               m[x][y] = 0
   return s1[x_longest - longest: x_longest]
print(longest_common_substring('wellbeing', 'welcome'))

आउटपुट

wel

इस तरह यह काम करता है

  • प्रारंभ में, हमने काउंटर ऐरे (एम) को सभी 0.

    . में इनिशियलाइज़ किया
  • पहली पंक्ति से शुरू करते हुए, हम स्ट्रिंग s1 के पहले वर्ण की तुलना स्ट्रिंग s2 के सभी वर्णों से करेंगे।

  • जबकि हम s2 में वर्णों को पार करते हैं, यदि यह s1 में वर्ण से मेल खाता है, तो हम काउंटर को बढ़ाते हैं। इसे m[i][j] सहेजा जाएगा जो तिरछे एक निचले स्थान पर है।

अंत में हम लूप में गणना किए गए सूचकांकों का उपयोग करके सबसे लंबी उप-स्ट्रिंग लौटाते हैं।


  1. पता करें कि क्या पायथन में किसी स्रोत से k लंबाई से अधिक का पथ है

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

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

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें दो तार दिए गए हैं, हमें दिए गए तार से असामान्य शब्द निकालने होंगे। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # uncommon words def find(A, B):    # count    count = {}   &n

  1. दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें दो सरणियाँ दी गई हैं, हमें दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने की आवश्यकता है आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # sys module import sys # pair def print_(ar1, ar2, m, n, x):