समस्या विवरण
एक स्ट्रिंग को दी गई संख्या में कंकेटनेट करने का प्रोग्राम स्ट्रिंग कंकेटनेशन मेथड को n बार चलाएगा, n के मान के आधार पर। परिणाम वह स्ट्रिंग होगी जो कई बार दोहराई गई हो।
उदाहरण
दिया गया स्ट्रिंग: "I love Tutorials point" n = 5
आउटपुट
I love Tutorials pointI love Tutorials pointI love Tutorials pointI love Tutorials point I love Tutorials point
एल्गोरिदम
concatString(str, n):
result = str
for i = 1 to n-1:
result = result + str
return result
उदाहरण 1: लूप का उपयोग करके
#include <iostream>
#include <string>
using namespace std;
string repeat(string s, int n) {
string result = s;
for (int i = 1; i < n; i++) {
result += s; // स्ट्रिंग्स कंकेटनेट करना
}
return result;
}
int main() {
string s = "I love tutorials point";
int n = 4;
string result = repeat(s, n);
cout << result << endl;
return 0;
}
आउटपुट
I love tutorials pointI love tutorials pointI love tutorials pointI love tutorials point
उदाहरण 2: main() में सीधे
#include <iostream>
#include <string>
using namespace std;
int main() {
string myStr, result = "";
int n;
cout << "Enter String: ";
cin >> myStr;
cout << "Enter number of times to concatenate: ";
cin >> n;
for(int i = 0; i < n; i++) {
result += myStr;
}
cout << "Result: " << result;
return 0;
}
आउटपुट
Enter String: Hello Enter number of times to concatenate: 5 Result: HelloHelloHelloHelloHello
बेहतर दृष्टिकोण: string::append या रिजर्व का उपयोग
string repeatEfficient(string s, int n) {
string result;
result.reserve(s.length() * n); // मेमोरी पूर्व-आरक्षित करें
for (int i = 0; i < n; i++) {
result += s;
}
return result;
}
समय जटिलता
- बेसिक लूप: O(n × m) जहां m स्ट्रिंग की लंबाई है
- reserve() के साथ: O(n × m) लेकिन कम रिकैलोकेशन
नोट
C++20 में std::string::repeat() का प्रस्ताव है लेकिन अभी तक स्टैंडर्ड में नहीं है। बड़े n के लिए, reserve() का उपयोग करके प्रदर्शन में सुधार करें।