Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์ตัวอักษรและความถี่ตามลำดับที่ปรากฏใน C++

โจทย์

ให้สตริงตัวพิมพ์เล็ก ต้องการพิมพ์ตัวอักษรแต่ละตัวและความถี่ ตามลำดับที่ปรากฏในสตริง

ตัวอย่าง: "jskdk" → j 1, s 1, k 2, d 1

อัลกอริทึม

Step 1: สร้างอาร์เรย์ขนาด 26 เก็บความถี่
Step 2: ลูปผ่านสตริง นับความถี่
Step 3: ลูปผ่านสตริงอีกครั้ง ถ้าความถี่ > 0 พิมพ์ตัวอักษรและความถี่ แล้วเซ็ตความถี่เป็น 0 (กันพิมพ์ซ้ำ)

ตัวอย่างโค้ด C++

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

int main() {
    string str = "tutorialspoint";
    int n = str.size();
    int frequency[26];
    memset(frequency, 0, sizeof(frequency));
    for (int i = 0; i < n; i++)
        frequency[str[i] - 'a']++;
    for (int i = 0; i < n; i++) {
        if (frequency[str[i] - 'a'] != 0) {
            cout << str[i] << "\t" << frequency[str[i] - 'a'] << "\n";
            frequency[str[i] - 'a'] = 0;
        }
    }
    return 0;
}

ผลลัพธ์

t 3
u 1
o 2
r 1
i 2
a 1
l 1
s 1
p 1
n 1