เราได้รับสตริงที่มีตัวอักษรพิมพ์ใหญ่และเล็ก งานคือการนับตัวอักษรที่อยู่ในตำแหน่งดัชนี (index) เท่ากับลำดับในตัวอักษรภาษาอังกฤษ (A=1, B=2, ...)
ตัวอย่าง
Input − String str = "eBGD" Output − Count is: 2
คำอธิบาย − B(ดัชนี 1, ลำดับ 2) และ D(ดัชนี 3, ลำดับ 4) ตรงกัน (ใช้ 0-indexed: i == str[i]-'A' หรือ 'a')
Input − String str = "Abcdeizxy" Output − Count is: 5
คำอธิบาย − A(0), B(1), C(2), D(3), E(4) ตรงกับลำดับ 1,2,3,4,5 (0-indexed)
แนวทางการแก้ปัญหา
- วนลูป i จาก 0 ถึงความยาวสตริง
- ตรวจสอบ i == str[i] - 'a' (สำหรับพิมพ์เล็ก) หรือ i == str[i] - 'A' (สำหรับพิมพ์ใหญ่)
- ถ้าใช่เพิ่มตัวนับ
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int countAlphabetPosition(string str) {
int res = 0;
for (int i = 0; i < str.size(); i++) {
if (i == (str[i] - 'a') || i == (str[i] - 'A')) {
res++;
}
}
return res;
}
int main() {
string str = "aBTutorIalspOiNT";
cout << "Count is: " << countAlphabetPosition(str);
return 0;
}
ผลลัพธ์
Count is: 2
บทความนี้อธิบายวิธีนับตัวอักษรในสตริงที่ตำแหน่งดัชนี (0-based) ตรงกับลำดับในตัวอักษรอังกฤษ (A=0, B=1, ...) สำหรับทั้งพิมพ์ใหญ่และเล็ก