मान लीजिए हमने दो तार 'ए' और 'बी' दिए हैं, तो कार्य यह पता लगाना है कि क्या हम स्ट्रिंग 'ए' को दो स्थानों पर वामावर्त या दक्षिणावर्त दिशा में घुमाकर स्ट्रिंग 'बी' प्राप्त कर सकते हैं। उदाहरण के लिए,
इनपुट-1 -
a = google b = legoog
आउटपुट -
True
स्पष्टीकरण - स्ट्रिंग 'गूगल' को घड़ी की विपरीत दिशा में दो स्थानों पर घुमाया जा सकता है, जिसके परिणामस्वरूप स्ट्रिंग 'लेगोग' बन जाती है। इस प्रकार, हम ट्रू लौटते हैं।
इनपुट-2 -
a = tuorialst b = tutorials
आउटपुट -
False
स्पष्टीकरण - एक और स्ट्रिंग 'ट्यूटोरियल' प्राप्त करने के लिए स्ट्रिंग 'ट्यूरियलस्ट' को किसी भी दिशा में दो स्थानों से घुमाया नहीं जा सकता है। इस प्रकार, हम झूठी वापसी करते हैं।
इस समस्या को हल करने के लिए इस्तेमाल किया जाने वाला तरीका
दिए गए दो स्ट्रिंग्स के लिए, इस दृष्टिकोण में हमारे पास दो मामले हैं -
-
वामावर्त घुमाने के लिए
-
दक्षिणावर्त घुमाने के लिए
सबसे पहले, यदि दोनों तारों की लंबाई अलग है, तो झूठी वापसी करें। अन्यथा, यदि दोनों स्ट्रिंग्स की लंबाई '2' से कम या उसके बराबर है, तो हम ट्रू वापस आ जाएंगे।
अन्य मामलों में, हम जांच करेंगे कि क्या स्ट्रिंग 'बी' का सबस्ट्रिंग दो स्थानों को वामावर्त दिशा में घुमाकर स्ट्रिंग 'ए' के बराबर है, तो हम ट्रू वापस आ जाएंगे। अन्यथा, गलत।
इसी तरह, यदि स्ट्रिंग 'बी' को घड़ी की दिशा में दो स्थानों पर घुमाने से, यह स्ट्रिंग 'ए' के बराबर हो जाता है, तो सही है, अन्यथा, हम झूठी वापसी करेंगे।
-
दो इनपुट स्ट्रिंग 'ए' और 'बी' लें
-
एक बूलियन फ़ंक्शन checkRotated (स्ट्रिंग ए, स्ट्रिंग बी) दो स्ट्रिंग्स 'ए' और 'बी' लेता है, और यदि वे स्ट्रिंग 'बी' को वामावर्त या दक्षिणावर्त दिशा में घुमाकर समान हैं तो वापस आ जाता है।
-
स्ट्रिंग 'ए' और स्ट्रिंग 'बी' की लंबाई की जांच करें।
-
दो स्थानों को वामावर्त घुमाकर स्ट्रिंग 'बी' के सबस्ट्रिंग का पता लगाएं।
-
अब जांचें कि परिणामी सबस्ट्रिंग स्ट्रिंग 'ए' के बराबर है या नहीं और अगर यह बराबर है तो सही है।
-
स्ट्रिंग 'बी' को दो स्थानों पर दक्षिणावर्त दिशा में घुमाकर उसके स्थानापन्न का पता लगाएं।
-
अब जांचें कि परिणामी सबस्ट्रिंग स्ट्रिंग 'ए' के बराबर है या नहीं और अगर यह बराबर है तो सही है।
-
अगर तार बराबर नहीं हैं, तो झूठी वापसी करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; bool checkRotated(string str1, string str2){ if (str1.length() != str2.length()) return false; if(str1.length() <= 2 || str2.length() <= 2) return (str1 == str2); string s1= str2.substr(str2.size()-2, str2.size()); string s2= str2.substr(0,str2.size()-2); string s3= s1+s2; if(s3==str1) return true; string s4= str2.substr(2,str2.size()); string s5= str2.substr(0,2); string s6= s4+s5; if(s6==str1) return true; return false; } int main(){ string a= "google"; string b="legoog"; cout<<checkRotated(a,b)<<endl; return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाएंगे, तो यह आउटपुट को इस रूप में प्रिंट करेगा,
1
चूंकि उपरोक्त कोड का आउटपुट "ट्रू" है, यह '1' प्रिंट करेगा।