Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm ký tự ở vị trí trùng với bảng chữ cái tiếng Anh C++

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