STR04 - Tần suất xuất hiện các ký tự

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Viết chương trình đếm tần suất xuất hiện của tất cả các ký tự (không phân biệt hoa thường) có trong chuỗi ~s~ được nhập từ bàn phím. In ra kết quả theo thứ tự từ điển (Tần suất xuất hiện của các chữ số 0-9, sau đó là a-z).

Lưu ý:

  • Chỉ đếm các ký tự thuộc bảng chữ cái tiếng anh (a-z, A-Z) và các chỗ số (0-9)
  • Không in các ký tự có tần suất bằng 0.

Input

  • Chuỗi ~s~ có độ dài không vượt quá 10000 ký tự

Giới hạn

  • Chuỗi ~s~ có thể bao gồm các chữ cái (a-z, A-Z), chữ số (0-9), khoảng trắng và các ký tự đặc biệt

Output

  • kết quả theo thứ tự từ điển (Tần suất xuất hiện của các chữ số 0-9, sau đó là a-z).Mỗi dòng gồm 1 ký tự (dạng viết thường) và số lần xuất hiện của ký tự đó trong ~s~, ngăn cách nhau bởi dấu cách

Sample

Input #1
Lap Trinh Khong Kho!
Output #1
a 1
g 1
h 3
i 1
k 2
l 1
n 2
o 2
p 1
r 1
t 1

Bình luận

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



  • 0
    lechinhhc  đã bình luận lúc 24, Tháng 4, 2024, 15:02
    có ích thì upvote cho mình nha
    #include "iostream"
    #include <bits/stdc++.h>
    using namespace std;
    string text;
    int main() {
        vector<int> arr;
        getline(cin,text);
        for(unsigned char word : text){
            int num_word = word;
            if(num_word >= 65 and num_word <= 90){
                bool check = true;
                num_word += 32;
                for(int num : arr){
                    if(num == num_word) check = false;
                }
                if(check) arr.push_back(num_word);
            }
            else if((num_word >= 97 and num_word <= 122) or (num_word >= 48 and num_word <= 57)){
                bool check = true;
                for(int num : arr){
                    if(num == num_word) check = false;
                }
                if(check) arr.push_back(num_word);
            }
        }
        sort(arr.begin(), arr.end());
        for(int n : arr) {
            char word = n;
            int num_ele = 0;
            for (unsigned char text_element: text) {
                int num_word = text_element;
                if (num_word >= 65 and num_word <= 90) {
                    num_word += 32;
                }
                char text_element2 = num_word;
                if (word == text_element2) num_ele += 1;
            }
            cout << word << " " << num_ele << endl;
        }
        return 0;
    }
    

  • 0
    tanh1603  đã bình luận lúc 22, Tháng 1, 2024, 14:27

    include <bits/stdc++.h>

    using namespace std; string UP( string &s ){ for(int i = 0 ; s[i] != '\0' ; i++){ s[i] = tolower(s[i]); } return s; } int main(){ string s; getline(cin , s); UP(s); int cnt[256] = {0}; for(int i = 0 ; s[i] != '\0' ; i++){ if( isalpha(s[i]) || isalnum(s[i]) ) cnt[s[i]]++; } for(int i = 0 ; i < 256 ; i++){ if( cnt[i] != 0 ) cout << (char)i << " " << cnt[i] <<endl; } }


  • 0
    ngkhacbaolam2809  đã bình luận lúc 21, Tháng 11, 2023, 7:54
    dùng multiset xuất count(x) đc nha

  • 0
    huynhnhatbao  đã bình luận lúc 17, Tháng 11, 2023, 12:18

    Có ai sai test 2 như mình k :v


    • 0
      nguye  đã bình luận lúc 26, Tháng 1, 2024, 14:36

      giống mình


    • 1
      tri_88  đã bình luận lúc 17, Tháng 11, 2023, 16:06

      Bài nay bạn có thể dùng map

      đầu tiên bạn hãy đổi các chữ cái in hoa thành in thường

      rồi đếm char của các kí tự

      sau đó duyệt từ 97 -> 122 và in ra

      Code mẫu C++ tại đây