Cho một chuỗi chữ hoa/thường, nhiệm vụ là đếm số ký tự nằm ở vị trí (index 0-based) trùng với thứ tự trong bảng chữ cái tiếng Anh (A=0, B=1... hoặc a=0, b=1...).
Ví dụ
Input - str = "eBGD" Output - Count: 2
Giải thích - 'B'(vị trí 1, index 1), 'D'(vị trí 3, index 3) thỏa mãn.
Input - str = "Abcdeizxy" Output - Count: 5
Giải thích - 'A'(0), 'b'(1), 'c'(2), 'd'(3), 'e'(4) thỏa mãn.
Phương pháp tiếp cận
- Duyệt i từ 0 đến str.size()-1
- Kiểm tra: i == (str[i] - 'a') HOẶC i == (str[i] - 'A')
- Vì chữ hoa và thường đều nhóm liên tiếp trong ASCII
- Tăng count nếu thỏa mãn
Ví dụ code C++
#include <iostream>
#include <string>
using namespace std;
int countalphabet(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: " << countalphabet(str);
return 0;
}
Kết quả
Count is: 2