समस्या विवरण
पॉइंटर का उपयोग करके स्ट्रिंग में वॉवेल्स की संख्या ढूंढने के लिए आपको स्ट्रिंग, वॉवेल्स और स्ट्रिंग के साथ पॉइंटर का उपयोग कैसे करना है, यह समझने की आवश्यकता है।
स्ट्रिंग कैरेक्टर्स की एक सरणी है। और वॉवेल्स {a, e, i, o, u} सेट के कैरेक्टर्स हैं। पॉइंटर एक वेरिएबल है जो किसी वेरिएबल की मेमोरी लोकेशन का मान संग्रहीत करता है।
स्ट्रिंग में वॉवेल्स की संख्या ढूंढने के लिए, हम स्ट्रिंग को पार करेंगे और फिर प्रत्येक कैरेक्टर की तुलना वॉवेल्स से करेंगे और यदि यह बराबर है तो काउंटर बढ़ाएंगे अन्यथा नहीं।
नीचे दिए गए कोड की शर्त यह है कि इसमें एक स्ट्रिंग की आवश्यकता है जिसमें सभी लोअरकेस कैरेक्टर्स हों। यदि नहीं, तो आप tolower() मेथड का उपयोग कर सकते हैं।
एल्गोरिदम
countVowels(str):
count = 0
ptr = str
while *ptr != '\0':
if *ptr in {a,e,i,o,u}:
count++
ptr++
return count
उदाहरण
#include <iostream>
#include <cctype> // tolower() के लिए
using namespace std;
int countVowels(const char *str) {
int count = 0;
const char *ptr = str;
while (*ptr != '\0') {
char ch = tolower(*ptr); // अपरकेस हैंडल करने के लिए
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
count++;
}
ptr++;
}
return count;
}
int main() {
char str[] = "i love tutorials point";
char *ptr = str;
int count = 0;
for (ptr; *ptr != '\0'; ptr++) {
if (*ptr == 'a' || *ptr == 'e' || *ptr == 'i' || *ptr == 'o' || *ptr == 'u') {
count++;
}
}
cout << "Vowels in the string: " << count;
return 0;
}
आउटपुट
Vowels in the string: 9
बेहतर संस्करण (केस-इनसेंसिटिव)
int countVowelsCaseInsensitive(const char *str) {
int count = 0;
while (*str) {
char ch = tolower(*str);
switch (ch) {
case 'a': case 'e': case 'i': case 'o': case 'u':
count++;
}
str++;
}
return count;
}
std::string के साथ उपयोग
int countVowelsString(const string &s) {
int count = 0;
for (char ch : s) {
ch = tolower(ch);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
count++;
}
return count;
}
समय जटिलता
O(n) जहां n स्ट्रिंग की लंबाई है
स्थान जटिलता
O(1) - केवल काउंटर वेरिएबल का उपयोग