समस्या विवरण
इस समस्या में, हमें आकार N की एक स्ट्रिंग str[] और एक पूर्णांक X दिया गया है। हमारा कार्य स्ट्रिंग से पहले X स्वर प्रिंट करने के लिए एक प्रोग्राम बनाना है।
हम स्ट्रिंग से पहले X स्वर प्रिंट करेंगे और यदि X से कम स्वर मौजूद हैं, तो -1 प्रिंट करें।
उदाहरण
इनपुट: str = "learn C programming language", X = 5 आउटपुट: e, a, o, a, i स्वर हैं: a, e, i, o, u
हल का दृष्टिकोण
समस्या का एक सरल समाधान स्ट्रिंग को वर्ण दर वर्ण पार करना है। और स्ट्रिंग के सभी स्वरों को एक स्वर स्ट्रिंग में संग्रहीत करना। और यदि इस स्ट्रिंग की लंबाई X के बराबर है, तो इसे वापस करें। यदि स्ट्रिंग के सभी स्वर X तक गिनती नहीं बना सकते, तो -1 वापस करें।
C++ कार्यान्वयन
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
bool isVowel(char c) {
c = tolower(c);
return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
}
string findXVowelsString(string s, int x) {
string vowelsString = "";
for (int i = 0; i < s.length(); i++) {
if (isVowel(s[i])) {
vowelsString += s[i];
if (vowelsString.length() == x) {
return vowelsString;
}
}
}
return "-1";
}
int main() {
string str = "learn C programming language";
int x = 5;
cout << "स्ट्रिंग से पहले " << x << " स्वर हैं " << findXVowelsString(str, x);
return 0;
}
आउटपुट
स्ट्रिंग से पहले 5 स्वर हैं eaoai
जटिलता विश्लेषण
- समय जटिलता: O(N) जहां N स्ट्रिंग की लंबाई है
- स्पेस जटिलता: O(X) परिणाम स्ट्रिंग के लिए
विविधताएं
- केस-असंवेदनशील: tolower() का उपयोग करके दोनों केस संभालता है
- केवल अद्वितीय स्वर: पहले से देखे गए स्वरों को ट्रैक करने के लिए एक सेट का उपयोग करें
- स्वर गिनती: प्रत्येक स्वर की आवृत्ति गिनने के लिए मानचित्र का उपयोग करें