समस्या विवरण
एक स्ट्रिंग str, एक वर्ण और एक धनात्मक पूर्णांक N दिया गया है। स्ट्रिंग str अनिश्चित काल तक दोहराई जाती है। लक्ष्य दोहराव के पहले N वर्णों में str में वर्ण की घटनाओं की संख्या ज्ञात करना है।
यदि str "abac" है, वर्ण ch='b' है और N 10 है।
"abacabacabacabac..." के पहले 10 वर्णों में b दो बार आता है।
नोट - str और वर्ण ch को एक ही केस में लें।
उदाहरण
इनपुट
str = "TPTTTT" ch = 'T' n = 12
आउटपुट
दोहराए गए स्ट्रिंग में वर्ण की घटनाओं की गिनती: 10
व्याख्या
str में 'T' की संख्या 5 है। str की लंबाई 6 है। n=12 के लिए, str पूरी तरह से दो बार दोहराया जाएगा, इसलिए T की गिनती 6*2=12 है।
इनपुट
str = "sets" ch = 's' n = 15
आउटपुट
दोहराए गए स्ट्रिंग में वर्ण की घटनाओं की गिनती: 7
व्याख्या
str में 's' की संख्या 2 है। str की लंबाई 4 है। n=15 के लिए, str पूरी तरह से 3 बार दोहराया जाएगा (पहले 12 वर्ण), इसलिए उनमें s की गिनती 3*2=6 होगी। शेष 3 वर्णों (set) के लिए s एक बार आता है। तो गिनती 6+1=7 है।
दृष्टिकोण
इस दृष्टिकोण में हम पहले str में वर्ण ch की घटनाओं की संख्या गिनेंगे। फिर हम str की लंबाई को N से विभाजित करेंगे। हमें N वर्णों के भीतर str के पूर्ण दोहराव की संख्या (N / str की लंबाई) से मिलेगी। इसलिए उन दोहरावों में ch की घटनाएं साधारण गुणनफल होंगी। शेष वर्णों (N % str की लंबाई) के लिए str में फिर से ch गिनें और पिछली गिनती में जोड़ें।
एल्गोरिदम चरण
- एक स्ट्रिंग
strलें। nको पूर्णांक,chको वर्ण औरstrकी लंबाई को पूर्णांक के रूप में लें।- फंक्शन
occurrences_char(string str, int length, int n, char ch)str,ch,nऔरstrकी लंबाई लेता है और दोहराई गई स्ट्रिंगstrके पहलेnवर्णों मेंchकी गिनती लौटाता है। - प्रारंभिक गिनती 0 लें।
forलूप का उपयोग करकेstrमेंchकी घटनाएं गिनें। प्रत्येकstr[i]==chके लिए गिनती बढ़ाएं।strकेnमें दोहराव की संख्याocc = n / lengthहोगी।- इन दोहरावों में
chकी घटनाएंcount * occहोंगी। - शेष
n % lengthवर्णों के लिए जांचें किstr[i]==ch, यदि हां तो गिनती बढ़ाएं। - परिणाम के रूप में गिनती लौटाएं।
C++ कोड उदाहरण
#include <bits/stdc++.h>
using namespace std;
int occurrences_char(string str, int length, int n, char ch) {
int count = 0;
for (int i = 0; i < length; i++) {
if (str[i] == ch) {
count++;
}
}
int occ = n / length;
count = count * occ;
for (int i = 0; i < n % length; i++) {
if (str[i] == ch) {
count++;
}
}
return count;
}
int main() {
string str = "TPTTTT";
char ch = 'T';
int n = 12;
int length = str.size();
cout << "दोहराए गए स्ट्रिंग में वर्ण की घटनाओं की गिनती: " << occurrences_char(str, length, n, ch);
return 0;
}
आउटपुट
दोहराए गए स्ट्रिंग में वर्ण की घटनाओं की गिनती: 10