fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <cctype>
  4. #include <map>
  5. #include <vector>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. void demKyTuTheoThuTu(const string& str) {
  11. if (str.empty()) {
  12. cout << "chuoi rong" << endl;
  13. return;
  14. }
  15.  
  16. // map để lưu trữ số lần xuất hiện của TỪNG ký tự (phân biệt hoa/thường)
  17. map<char, int> dem;
  18.  
  19. // vector để lưu trữ thứ tự xuất hiện lần đầu của các ký tự
  20. vector<char> thuTuXuatHien;
  21.  
  22. for (char c : str) {
  23. // Kiểm tra nếu ký tự là alphabet hoặc là dấu cách
  24. if (isalpha(c) || c == ' ') {
  25.  
  26. // Nếu ký tự này chưa được đếm (lần đầu xuất hiện)
  27. if (dem.find(c) == dem.end()) {
  28. thuTuXuatHien.push_back(c); // Ghi nhận thứ tự
  29. }
  30.  
  31. // Tăng số lần đếm của ký tự đó (sẽ phân biệt 'A' và 'a')
  32. dem[c]++;
  33. }
  34. }
  35.  
  36. // In kết quả theo thứ tự xuất hiện lần đầu
  37. cout << "So lan xuat hien cua cac ky tu (phan biet hoa/thuong) theo thu tu: " << endl;
  38.  
  39. for (char kyTu : thuTuXuatHien) {
  40. if (kyTu == ' ') {
  41. cout << "Dau cach: " << dem[kyTu] << endl;
  42. } else {
  43. cout << kyTu << ": " << dem[kyTu] << endl;
  44. }
  45. }
  46. }
  47.  
  48. int main() {
  49. string input;
  50.  
  51. cout << "Nhap mot chuoi: ";
  52. // Đảm bảo xóa bộ đệm nếu có input trước đó
  53. if (cin.peek() == '\n') {
  54. cin.ignore();
  55. }
  56. getline(cin, input);
  57.  
  58. demKyTuTheoThuTu(input);
  59.  
  60. return 0;
  61. }
  62.  
Success #stdin #stdout 0.01s 5288KB
stdin
Phan Trung Nguyên 6767
stdout
Nhap mot chuoi: So lan xuat hien cua cac ky tu (phan biet hoa/thuong) theo thu tu: 
P: 1
h: 1
a: 1
n: 3
Dau cach: 3
T: 1
r: 1
u: 2
g: 2
N: 1
y: 1