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

एडिट डिस्टेंस


दो स्ट्रिंग्स दी गई हैं। पहली स्ट्रिंग स्रोत स्ट्रिंग है और दूसरी स्ट्रिंग लक्ष्य स्ट्रिंग है। इस प्रोग्राम में, हमें यह ढूंढना है कि पहली स्ट्रिंग को दूसरी स्ट्रिंग में बदलने के लिए कितने संभावित संपादन की आवश्यकता है।

स्ट्रिंग्स का संपादन या तो कुछ तत्व डालना हो सकता है, पहली स्ट्रिंग से कुछ हटाना या दूसरी स्ट्रिंग में बदलने के लिए कुछ संशोधित करना।

इनपुट और आउटपुट

इनपुट: तुलना के लिए दो स्ट्रिंग्स। स्ट्रिंग 1: Programming स्ट्रिंग 2: Programs आउटपुट: प्रारंभिक स्ट्रिंग दर्ज करें: Programming अंतिम स्ट्रिंग दर्ज करें: Programs Programming को Programs में बदलने के लिए आवश्यक परिवर्तनों की संख्या 4 है

एल्गोरिदम

editCount(initStr, finalStr, initLen, finalLen)

इनपुट: प्रारंभिक और अंतिम स्ट्रिंग और उनकी लंबाई।
आउटपुट: initStr को finalStr बनाने के लिए आवश्यक संपादनों की संख्या।

शुरू     यदि initLen = 0, तो       वापस करें finalLen     यदि finalLen := 0, तो       वापस करें initLen     यदि initStr[initLen - 1] = finalStr[finalLen - 1], तो       वापस करें editCount(initStr, finalStr, initLen – 1, finalLen - 1)     answer := 1 + min of (editCount(initStr, finalStr, initLen , finalLen - 1)),       (editCount(initStr, finalStr, initLen – 1, finalLen ),       (editCount(initStr, finalStr, initLen – 1, finalLen - 1)     answer वापस करें अंत

उदाहरण

#include<iostream> using namespace std; int min(int x, int y, int z) {       //तीन संख्याओं में सबसे छोटी खोजें     if(x < y) {       if(x < z)         return x;       else         return z;     }else {       if(y < z)         return y;       else         return z;     } } int editCount(string initStr , string finalStr, int initLen, int finalLen) {     if (initLen == 0)       //जब प्रारंभिक स्ट्रिंग खाली हो, तो अंतिम स्ट्रिंग के सभी वर्ण जोड़ें       return finalLen;     if (finalLen == 0)       //जब अंतिम स्ट्रिंग खाली हो, तो प्रारंभिक स्ट्रिंग से सभी वर्ण हटाएं       return initLen;     //जब अंतिम वर्ण मेल खाता हो, तो पिछले वर्णों को पुनरावर्ती रूप से जांचें     if (initStr[initLen-1] == finalStr[finalLen-1])       return editCount(initStr, finalStr, initLen-1, finalLen-1);     //यदि अंतिम वर्ण मेल नहीं खाता, तो सम्मिलन, हटाने और अद्यतन संचालन के लिए पुनरावर्ती रूप से जांचें     return 1 + min ( editCount(initStr, finalStr, initLen, finalLen- 1),       // सम्मिलन       editCount(initStr, finalStr, initLen-1, finalLen), // हटाना       editCount(initStr, finalStr, initLen-1, finalLen-1) // अद्यतन       ); } int main() {     string initStr;     string finalStr;     cout << "Enter the initial string: "; cin >> initStr;     cout << "Enter the final string: "; cin >> finalStr;     cout << "The number of changes required to convert " << initStr << " to " << finalStr;     cout << " is " << editCount( initStr , finalStr, initStr.size(), finalStr.size()) << endl; }

आउटपुट

Enter the initial string: Programming Enter the final string: Programs The number of changes required to convert Programming to Programs is 4

  1. - C# में ContainsValue

    C# में Dictionary में किसी मान को खोजने के लिए ContainsValue() मेथड का उपयोग करें।एक Dictionary बनाएं और तत्व जोड़ें:Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("keyboard", "One"); d.Add("mouse", "Two");अब, किसी विशेष मान

  1. - C# में स्ट्रिंग को रिवर्स करें

    स्ट्रिंग को रिवर्स करने के लिए, Array.Reverse() मेथड का उपयोग करें।हमने एक मेथड सेट किया है और स्ट्रिंग वैल्यू Henry पास की है:public static string ReverseFunc(string str) { char[] ch = str.ToCharArray(); Array.Reverse(ch); return new string(ch); }उपरोक्त मेथड में, हमने स्ट्रिंग को कैरेक

  1. - पायथन में जांचें कि दो स्ट्रिंग्स के बीच संपादन दूरी एक है या नहीं

    मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं। हमें जांचना है कि s और t के बीच संपादन दूरी ठीक एक है या नहीं। यहां दो स्ट्रिंग्स के बीच संपादन का अर्थ इन तीन में से कोई भी है: एक वर्ण डालें एक वर्ण हटाएं एक वर्ण बदलें इसलिए, यदि इनपुट s = hello, t = heillo है, तो आउटपुट True होगा क्योंकि हमें s मे