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

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, 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

Comments

Please read the guidelines before commenting.



  • 0
    SuperCoder  commented on May 4, 2025, 2:24 a.m.
    #include <iostream>
    #include <map>
    #define ll long long
    
    using namespace std;
    
    int main() {
    
        string str;
        getline(cin,str);
    
        map<char, int> m;
        for(int i = 0; i < str.length(); i++) {
            m[tolower(str[i])]++;
        }
    
        for(pair<char, int> it : m) {
            if(it.first == ' ') {
                continue;
            }
            if(it.first >= 'a' && it.first <= 'z' || it.first >= '0' && it.first <= '9') {
                cout << it.first << " " << it.second;
                cout << endl;
            }
        }
    
        return 0;
    }
    

  • 0
    hung0909  commented on April 3, 2025, 8:24 a.m.

    include <bits/stdc++.h>

    using namespace std; string s,res; map<char,int>dem; int main() { getline(cin,s); sort(s.begin(),s.end()); for(auto x : s) { x=tolower(x); if ((x>='0'&&x<='9')||(x>='a'&&x<='z'))

        {
            dem[x]++;
            if(dem[x]==1)
                res+=x;
        }
    }
    for(auto x:res)
    {
        cout<&lt;x<<" "<&lt;dem[x]<<'\n';
    }
    

    } sai o dau??


  • 0
    MisolHo  commented on March 11, 2025, 12:44 a.m.

    dùng isalnum(char c) Trả về 1 nếu kí tự c là chữ số hoặc chữ cái, ngược lại trả về 0


  • -1
    super_god  commented on Oct. 8, 2024, 2:52 a.m.

    hello ae


  • 0
    ngkhacbaolam2809  commented on Nov. 21, 2023, 7:54 a.m.
    dùng multiset xuất count(x) đc nha

  • -1
    huynhnhatbao  commented on Nov. 17, 2023, 12:18 p.m.

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


    • 1
      tri_88  commented on Nov. 17, 2023, 4:06 p.m.

      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