Hướng dẫn giải của [200 đề thầy Đức] Bài 163: Thống kê chữ cái


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho chuỗi S chỉ gồm chữ cái tiếng Anh in thường. Đếm số lần xuất hiện của mỗi chữ cái và in theo thứ tự bảng chữ cái, chỉ in những chữ cái có xuất hiện.

Cách làm

Dùng mảng dem gồm 26 phần tử: dem[0] ứng với chữ 'a', dem[1] ứng với chữ 'b', và cứ thế. Với mỗi kí tự s[i], tăng dem[s[i] - 'a'] lên 1. Sau đó duyệt c từ 0 đến 25, nếu dem[c] > 0 thì in chữ cái (char)('a' + c), dấu hai chấm và số lần.

Bẫy: phải khởi tạo mảng dem bằng 0 trước khi đếm.

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin >> s;
    // dem[0] là số lần xuất hiện của chữ 'a', dem[1] của 'b', ...
    int dem[26];
    for (int c = 0; c < 26; c++) {
        dem[c] = 0;
    }
    for (int i = 0; i < (int)s.size(); i++) {
        dem[s[i] - 'a']++;
    }
    // In theo thứ tự bảng chữ cái, chỉ in những chữ có xuất hiện
    for (int c = 0; c < 26; c++) {
        if (dem[c] > 0) {
            cout << (char)('a' + c) << ":" << dem[c] << "\n";
        }
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.