हमें दो अलग-अलग स्ट्रिंग्स के साथ दिया गया है, मान लें कि s1 और s2 और कार्य स्ट्रिंग बनाने के लिए है, आइए s1 और s2 के अद्वितीय अक्षरों को मिलाकर S कहते हैं और अब जांचें कि क्या स्ट्रिंग S से एक वर्ण को हटाने के बाद यह एक स्ट्रिंग बना रहा है जो स्ट्रिंग s1 या s2 के बराबर होगा।
उदाहरण के लिए
इनपुट - स्ट्रिंग S1 ="पूरा", स्ट्रिंग S2 ="मक्खन";
आउटपुट - एक हटाने के बाद दो स्ट्रिंग्स में से एक के बराबर बनने वाले स्ट्रिंग्स की संख्या हैं:1
स्पष्टीकरण - हमें स्ट्रिंग s1 और s2 के साथ दिया गया है और हम स्ट्रिंग S यानी 'मक्खन' से लेंगे और अब अगर हम स्ट्रिंग S से अक्षर 'b' को हटा दें तो यह 'अकथन' हो जाएगा जो स्ट्रिंग s1 के बराबर है इसलिए गिनती 1 है।
इनपुट - स्ट्रिंग S1 ="वसा", स्ट्रिंग S2 ="चूहा";
आउटपुट - एक हटाने के बाद दो स्ट्रिंग्स में से एक के बराबर बनने वाले स्ट्रिंग्स की संख्या हैं:2
स्पष्टीकरण - हमें स्ट्रिंग s1 और s2 के साथ दिया गया है और हम स्ट्रिंग S यानी 'फ्रैट' बनाएंगे और अब अगर हम स्ट्रिंग S से अक्षर 'rs' को हटा दें तो यह 'वसा' बन जाएगा जो स्ट्रिंग s1 के बराबर है और यदि हम अक्षर को हटाते हैं 'f' यह 'चूहा' बन जाएगा जो स्ट्रिंग s2 के बराबर है इसलिए गिनती 2 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
- दो स्ट्रिंग्स s1 और s2 घोषित करें और स्ट्रिंग s1 के आकार की गणना करें और आगे की प्रक्रिया के लिए डेटा को फ़ंक्शन में पास करें।
- एक चर गणना घोषित करें और इसे 2 के रूप में सेट करें क्योंकि अधिकतम आउटपुट जो संभव हो सकता है 2 है।
- लूप ट्रैवर्सल के लिए दो अस्थायी चरों को प्रारंभ और अंत के रूप में घोषित करें।
- 0 से एक स्ट्रिंग s1 के आकार तक के लिए लूप प्रारंभ करें और लूप के अंदर जांचें यदि s1[i] s2 के बराबर नहीं है, तो प्रारंभ को i और ब्रेक के रूप में सेट करें
- एक और लूप शुरू करें I से स्ट्रिंग s1 के एक कम आकार तक और लूप के अंदर चेक करें कि IF s1 s2 के बराबर नहीं है, तो अंत को i और ब्रेक के रूप में सेट करें
- जांचें कि अगर अंत का मान कम है तो शुरू करें फिर गिनती को 26 * (स्ट्रिंग s1 + 1 का आकार) और वापसी गणना के रूप में सेट करें।
- ELSE यदि चेक प्रारंभ बराबर होता है, तो वापसी की गिनती होती है
- ELSE, अंत तक +1 शुरू करने के लिए i से लूप शुरू करें और लूप के अंदर जांचें IF s1[i] s2[i-1] के बराबर नहीं है, फिर गिनती को 1 से घटाएं और तोड़ें
- मैं से शुरू करने के लिए + 1 से अंत तक लूप शुरू करें और जांचें कि IF s1[i-1] s2 के बराबर नहीं है [i] फिर गिनती को 1 से घटाएं और तोड़ें
- गिनती लौटाएं।
- परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; int equal_removal(string S1, string S2, int size_S1) { int count = 2; int start; int end; for (int i = 0; i < size_S1; ++i) { if (S1[i] != S2[i]) { start = i; break; } } for (int i = size_S1 - 1; i >= 0; i--) { if (S1[i] != S2[i]) { end = i; break; } } if (end < start) { count = 26 * (size_S1 + 1); return count; } else if (start == end) { return count; } else { for (int i = start + 1; i <= end; i++) { if (S1[i] != S2[i - 1]) { count--; break; } } for (int i = start + 1; i <= end; i++) { if (S1[i - 1] != S2[i]) { count--; break; } } return count; } } int main() { string S1 = "utter"; string S2 = "butter"; int size_S1 = S1.length(); cout << "Count of strings that become equal to one of the two strings after one removal are: " << equal_removal(S1, S2, size_S1); return 0; }
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
आउटपुट
Count of strings that become equal to one of the two strings after one removal are: 1