इस समस्या में, हमें एक स्ट्रिंग str और Q क्वेरी दी गई हैं जिनमें दो मान a और b होते हैं। हमारा कार्य C++ में दोहराए गए स्ट्रिंग में वर्णों के लिए क्वेरी को हल करने के लिए एक प्रोग्राम बनाना है।
समस्या विवरण
प्रत्येक क्वेरी को हल करने के लिए, हमें यह जांचना होगा कि इंडेक्स a और b पर वर्ण समान हैं या नहीं और तदनुसार मान लौटाना होगा।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: str = “tutorialspoint”
Q = 2
क्वेरी = {{0, 2}, {4, 7}}
आउटपुट: दोहराया गया
नहीं दोहराया गया
व्याख्या
क्वेरी 1 के लिए, इंडेक्स 0 पर वर्ण t है, और इंडेक्स 2 पर वर्ण t है। दोनों समान वर्ण हैं।
क्वेरी 1 के लिए, इंडेक्स 4 पर वर्ण r है, और इंडेक्स 7 पर वर्ण l है। दोनों समान वर्ण नहीं हैं।
समाधान दृष्टिकोण
समस्या को हल करने के लिए, हम बस इंडेक्स a और b पर तत्वों की समतुल्यता की जांच करेंगे। यदि कोई इंडेक्स स्ट्रिंग की लंबाई से अधिक है, तो हम (index%len) का मान ढूंढेंगे, ताकि वर्ण का इंडेक्स मिल सके। और तुलना के लिए नए इंडेक्स का उपयोग करेंगे।
उदाहरण
#include <iostream> #include <string> using namespace std; bool isrepeated(string str, int len, int a, int b){ if(a > len) a %= len; if(b > len) b %= len; if(str[a] == str[b]) return true; else return false; } int main(){ string str = "tutorialspoint"; int len = str.length(); int Q = 3; int query[Q][2] = {{0, 2}, {3, 32}, {5, 18}}; for(int i = 0; i < Q; i++){ if(isrepeated(str, len, query[i][0], query[i][1])) cout<<"दोनों इंडेक्स मानों में वर्ण दोहराया गया है"<<endl; else cout<<"दोनों इंडेक्स मानों में वर्ण नहीं दोहराया गया है"<<endl; } return 0; }
आउटपुट
दोनों इंडेक्स मानों में वर्ण दोहराया गया है वर्ण दोनों इंडेक्स मानों में नहीं दोहराया गया है वर्ण दोनों इंडेक्स मानों में नहीं दोहराया गया है