สมมติว่าเรามีสตริง '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
เนื่องจากสตริงอินพุต "อินเดีย" มีตัวพิมพ์ใหญ่ทั้งหมด เราจึงได้ผลลัพธ์เป็น "จริง"