मान लीजिए हमारे पास एक स्ट्रिंग 'str' है जिसमें कुछ वर्ण हैं। कार्य यह जांचना है कि दी गई स्ट्रिंग के सभी वर्ण कैपिटलाइज़्ड हैं या नहीं और तदनुसार True या False लौटाएं। उदाहरण के लिए,
इनपुट-1 -
str = "INDIA"
आउटपुट -
True
व्याख्या - चूंकि इनपुट स्ट्रिंग के सभी वर्ण कैपिटल हैं, हम इस मामले में true लौटाएंगे।
इनपुट-2 -
str = "Programmer"
आउटपुट -
False
व्याख्या - चूंकि इनपुट स्ट्रिंग के सभी वर्ण पहले अक्षर को छोड़कर कैपिटल में नहीं हैं, हम इस मामले में false लौटाएंगे।
इस प्रॉब्लम को हल करने के लिए उपयोग किया गया दृष्टिकोण
दी गई स्ट्रिंग में, हमें जांचना है कि इनपुट स्ट्रिंग के सभी वर्ण कैपिटलाइज़्ड हैं या नहीं। इस प्रकार, हम स्ट्रिंग के प्रत्येक वर्ण पर पुनरावृति करेंगे और जांचेंगे कि क्या यह 'A' से बड़ा और 'Z' से छोटा है।
यदि शर्त सत्य है, तो हम काउंटर बढ़ाएंगे। फिर, हम आगे बढ़ेंगे और फिर जांचेंगे कि क्या काउंटर का आकार स्ट्रिंग की लंबाई के समान है, तो true लौटाएं, अन्यथा false।
एक स्ट्रिंग 'str' का इनपुट लें
एक बूलियन फंक्शन checkCapital(string s) एक स्ट्रिंग को इनपुट के रूप में लेता है और true लौटाता है यदि स्ट्रिंग के सभी वर्ण कैपिटलाइज़्ड हैं।
एक काउंटर वेरिएबल लें और इसे शून्य के रूप में इनिशियलाइज़ करें।
स्ट्रिंग पर पुनरावृति करें और जांचें कि क्या वर्तमान वर्ण 'A' से 'Z' की रेंज में आता है यदि शर्त सत्य है तो काउंटर वेरिएबल को बढ़ाएं।
अब जांचें कि काउंटर स्ट्रिंग के आकार के समान है और तदनुसार True/False लौटाएं।
यदि काउंटर 0 है या स्ट्रिंग में एक वर्ण है जो कैपिटल है, तो true लौटाएं।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
bool checkCapital(string s) {
int counter = 0;
int loc = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
counter++;
loc = i;
}
}
if (counter == s.size() || counter == 0 || (counter == 1 && loc == 0))
return true;
return false;
}
int main() {
string str = "INDIA";
bool ans = checkCapital(str);
if (ans) {
cout << "True" << endl;
} else {
cout << "False" << endl;
}
return 0;
}
आउटपुट
उपरोक्त कोड चलाने पर निम्न आउटपुट उत्पन्न होगा,
True
चूंकि इनपुट स्ट्रिंग 'INDIA' में सभी वर्ण कैपिटल हैं, हमें आउटपुट के रूप में "True" मिलता है।