हमें एक स्ट्रिंग str दी गई है। लक्ष्य str में उन सबस्ट्रिंग की संख्या गिनना है जिनका प्रारंभिक वर्ण वर्ण X के समान हो और अंतिम वर्ण वर्ण Y के समान हो। उदाहरण के लिए, यदि इनपुट "artact" है और X='a' और Y='t', तो सबस्ट्रिंग होंगे "art", "act", "artact"। गिनती 3 है।
उदाहरण सहित समझ
इनपुट - str="abcccdef" X='a' Y='c'
आउटपुट - वर्ण X से शुरू और Y से समाप्त होने वाले सबस्ट्रिंग की संख्या: 3
व्याख्या - सबस्ट्रिंग होंगी:
"abc", "abcc", "abccc". कुल 3।
इनपुट - str="tempest" X='t' Y='t'
आउटपुट - वर्ण X से शुरू और Y से समाप्त होने वाले सबस्ट्रिंग की संख्या: 3
व्याख्या - सबस्ट्रिंग होंगी:
"t", "tempest", "t". कुल 3
प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम स्ट्रिंग को ट्रैवर्स करेंगे और X की गिनती बढ़ाएँगे। यदि फिर Y मिलता है तो X काउंट को उन स्ट्रिंग की गिनती में जोड़ें जो X से शुरू और Y से समाप्त होती हैं।
- स्ट्रिंग
strलें। लंबाई की गणनाstr.size()के रूप में करें। - फंक्शन
X_Y(string str, int length, char X, char Y)स्ट्रिंगstr, वर्णX,Yलेता है औरstrके उन सबस्ट्रिंग की संख्या लौटाता है जोXसे शुरू औरYसे समाप्त होते हैं। - प्रारंभिक काउंट 0 लें।
x_totalकोstrमें वर्णXकी संख्या के रूप में लें।- फॉर लूप का उपयोग करके
strको ट्रैवर्स करें। i=0 से i<length तक। - यदि
str[i] == X,strमें X की संख्या बढ़ाएँ (x_total++)। - यदि
str[i] == Y,x_totalको काउंट में जोड़ें। यदि कोई X नहीं था तोx_total0 होगा, अन्यथा Y उस सबस्ट्रिंग का अंतिम वर्ण है जो X से शुरू हुई थी। - वांछित परिणाम के रूप में काउंट लौटाएँ।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int X_Y(string str, int length, char X, char Y) {
int count = 0;
int x_total = 0;
for (int i = 0; i < length; i++) {
if (str[i] == X) {
x_total++;
}
if (str[i] == Y) {
count = count + x_total;
}
}
return count;
}
int main() {
string str = "defaabbcchhkl";
int length = str.size();
char X = 'd';
char Y = 'a';
cout << "Count of substrings that starts with character X and ends with character Y are: " << X_Y(str, length, X, Y);
return 0;
}
आउटपुट
Count of substrings that starts with character X and ends with character Y are: 2