สมมติว่าเรามีสตริง 'str' ซึ่งประกอบด้วยตัวอักษรบางตัว งานคือตรวจสอบว่าสตริงที่กำหนดมีตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่หรือไม่และคืนค่า True หรือ False ตามลำดับ ตัวอย่างเช่น
ตัวอย่างอินพุต 1
str = "INDIA"
เอาต์พุต
True
คำอธิบาย
เนื่องจากตัวอักษรทั้งหมดของสตริงอินพุตเป็นตัวพิมพ์ใหญ่ เราจะคืนค่า true ในกรณีนี้
ตัวอย่างอินพุต 2
str = "Programmer"
เอาต์พุต
False
คำอธิบาย
เนื่องจากตัวอักษรทั้งหมดของสตริงอินพุตไม่ได้เป็นตัวพิมพ์ใหญ่ ยกเว้นตัวอักษรแรก เราจะคืนค่า false ในกรณีนี้
วิธีการแก้ปัญหา
ในสตริงที่กำหนด เราต้องตรวจสอบว่าตัวอักษรทั้งหมดของสตริงอินพุตเป็นตัวพิมพ์ใหญ่หรือไม่ ดังนั้นเราจะวนลูปผ่านตัวอักษรแต่ละตัวของสตริงและจะตรวจสอบว่ามันมากกว่าหรือเท่ากับ 'A' และน้อยกว่าหรือเท่ากับ 'Z'
ถ้าเงื่อนไขเป็นจริง เราจะเพิ่มตัวนับ จากนั้นเราจะไปต่อและตรวจสอบอีกครั้งว่าขนาดของตัวนับเท่ากับความยาวของสตริงหรือไม่ แล้วคืนค่า true มิฉะนั้น false
- รับอินพุตของสตริง 'str'
- ฟังก์ชัน Boolean 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"