समस्या विवरण
दो स्ट्रिंग्स दी गई हैं, हमारा कार्य सबसे लंबा सामान्य सब-स्ट्रिंग प्रिंट करना है। हम इस समस्या को पायथन में SequenceMatcher.find_longest_match() विधि का उपयोग करके हल करेंगे।
क्लास difflib.SequenceMatcher किसी भी प्रकार के अनुक्रमों के जोड़े की तुलना के लिए एक लचीला वर्ग है, बशर्ते अनुक्रम तत्व हैशेबल हों।
find_longest_match(a, x, b, y)
a[a:x] और b[b:y] में सबसे लंबा मिलान ब्लॉक खोजें।
उदाहरण
इनपुट: str1 = "pythonprogramming", str2 = "pro"
आउटपुट: pro
एल्गोरिदम
- दो स्ट्रिंग दर्ज करें।
- इनपुट स्ट्रिंग के साथ SequenceMatcher ऑब्जेक्ट आरंभ करें।
- सबसे लंबे सब-स्ट्रिंग आउटपुट का मिलान खोजें।
- सबसे लंबा सबस्ट्रिंग प्रिंट करें।
उदाहरण कोड
# सबसे लंबा सामान्य सब-स्ट्रिंग खोजने का पायथन प्रोग्राम
from difflib import SequenceMatcher
def matchsubstring(m, n):
seqMatch = SequenceMatcher(None, m, n)
match = seqMatch.find_longest_match(0, len(m), 0, len(n))
if (match.size != 0):
print("सामान्य सबस्ट्रिंग ::>", m[match.a: match.a + match.size])
else:
print('कोई सबसे लंबा सामान्य सब-स्ट्रिंग नहीं मिला')
# ड्राइवर प्रोग्राम
if __name__ == "__main__":
X = input("पहली स्ट्रिंग दर्ज करें ")
Y = input("दूसरी स्ट्रिंग दर्ज करें ")
matchsubstring(X, Y)
आउटपुट
पहली स्ट्रिंग दर्ज करें pythonprogramming
दूसरी स्ट्रिंग दर्ज करें pro
सामान्य सबस्ट्रिंग ::> pro