Cho chuỗi chữ thường. In mỗi ký tự và tần suất theo thứ tự xuất hiện đầu tiên. Ví dụ: "jskdk" → j:1, s:1, k:2, d:1.
Mảng tần suất + duyệt chuỗi
Đếm tần suất vào mảng freq[26]. Duyệt chuỗi lần 2: nếu freq[c]>0 thì in c và freq[c], đặt freq[c]=0 để không in lại.
Ví dụ minh họa
#include <bits/stdc++.h>
using namespace std;
int main() {
string str = "tutorialspoint";
int freq[26] = {0};
for (char c : str) freq[c-'a']++;
for (char c : str) {
if (freq[c-'a'] > 0) {
cout << c << '\t' << freq[c-'a'] << '\n';
freq[c-'a'] = 0;
}
}
return 0;
}
Kết quả
t 3 u 1 o 2 r 1 i 2 a 1 l 1 s 1 p 1 n 1