สมมติว่าเรามีสตริง 'str' ซึ่งประกอบด้วยอักขระบางตัวในนั้น งานคือการตรวจสอบว่าสตริงที่กำหนดมีอักขระทั้งหมดเป็นตัวพิมพ์ใหญ่หรือไม่และคืนค่า True หรือ False ตามลำดับ ตัวอย่างเช่น
อินพุต-1 −
str = “INDIA”
ผลผลิต −
True
คำอธิบาย − เนื่องจากอักขระทั้งหมดของสตริงอินพุตเป็นตัวพิมพ์ใหญ่ เราจะคืนค่า true ในกรณีนี้
อินพุต-2 −
str = “Programmer”
ผลผลิต −
False
คำอธิบาย − เนื่องจากอักขระทั้งหมดของสตริงอินพุตไม่อยู่ในตัวพิมพ์ใหญ่ ยกเว้นอักษรตัวแรก เราจะคืนค่าเท็จในกรณีนี้
แนวทางที่ใช้ในการแก้ปัญหานี้
ในสตริงที่กำหนด เราต้องตรวจสอบว่าอักขระทั้งหมดของสตริงอินพุตเป็นตัวพิมพ์ใหญ่หรือไม่ ดังนั้น เราจะวนซ้ำอักขระแต่ละตัวของสตริงและจะตรวจสอบว่ามีค่ามากกว่า 'A' และน้อยกว่า 'Z' หรือไม่
หากเงื่อนไขเป็นจริงเราจะเพิ่มตัวนับ จากนั้นเราจะดำเนินการต่อไปและตรวจสอบอีกครั้งว่าขนาดของตัวนับเท่ากับความยาวของสตริงหรือไม่ จากนั้นคืนค่าจริงหรือเท็จ
-
รับอินพุตของสตริง 'str'
-
ฟังก์ชันบูลีน checkCapital(สตริง s) รับสตริงเป็นอินพุตและคืนค่า จริง หากอักขระทั้งหมดของสตริงเป็นตัวพิมพ์ใหญ่
-
หาตัวแปรตัวนับและเริ่มต้นเป็นศูนย์
-
วนซ้ำสตริงและตรวจสอบว่าอักขระปัจจุบันอยู่ภายใต้ช่วงของ 'A' ถึง 'Z' หากเงื่อนไขเป็นจริง จากนั้นให้เพิ่มตัวแปรตัวนับ
-
ตอนนี้ตัวนับตรวจสอบจะเท่ากับขนาดของสตริงและส่งกลับค่า True/False ตามลำดับ
-
หากตัวนับเป็น 0 หรือสตริงมีอักขระหนึ่งตัวซึ่งเป็นตัวพิมพ์ใหญ่ ให้คืนค่า จริง
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; bool checkCapital(string s){ int counter=0; int loc=i; 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
เนื่องจากสตริงอินพุต "อินเดีย" มีตัวพิมพ์ใหญ่ทั้งหมด เราจึงได้ผลลัพธ์เป็น "จริง"