ปัญหานี้ เราได้รับสตริงของอักขระตัวพิมพ์เล็ก และเราต้องหาความถี่ของอักขระแต่ละตัวที่เกิดขึ้นในสตริง ตัวอย่างด้านล่างเมื่ออธิบายเพิ่มเติมเกี่ยวกับปัญหา
Input : “jskdk” Output : j 1 s 1 k 2 d 1
คำอธิบาย − ในสตริง อักขระ j, s, d เกิดขึ้นหนึ่งครั้งและ k เกิดขึ้นสองครั้ง ดังนั้นผลงานที่พิมพ์ออกมาจึงให้ผลลัพธ์ข้างต้น
ตอนนี้ มาสร้างตรรกะเพื่อแก้ปัญหานี้กัน ตามที่ระบุไว้เราต้องหาความถี่ของการเกิดของอักขระแต่ละตัวในสตริง วิธีหนึ่งที่สมเหตุสมผลคือการสำรวจสตริงและนับความถี่ของการเกิดอักขระและจัดเก็บไว้ในอาร์เรย์ จากนั้นพิมพ์อักขระพร้อมกับความถี่ของการเกิด
อัลกอริทึม
Step 1 : Create an array of size 26 that stores the frequency of characters in the string. Step 2 : print all the characters along with their frequency of occurrence from the array.
ตัวอย่าง
ตอนนี้ มาสร้างโปรแกรมเพื่อค้นหาวิธีแก้ปัญหานี้
#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