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

พิมพ์อักขระและความถี่ตามลำดับเหตุการณ์ในภาษา C++


ปัญหานี้ เราได้รับสตริงของอักขระตัวพิมพ์เล็ก และเราต้องหาความถี่ของอักขระแต่ละตัวที่เกิดขึ้นในสตริง ตัวอย่างด้านล่างเมื่ออธิบายเพิ่มเติมเกี่ยวกับปัญหา

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