อาร์เรย์ เป็นคอนเทนเนอร์ขององค์ประกอบประเภทข้อมูลเดียวกัน
ความถี่เฉพาะ หมายความว่าจำนวนการเกิดขึ้นขององค์ประกอบของอาร์เรย์เป็นจำนวนเฉพาะ
ดังนั้น จากคำจำกัดความเหล่านี้ ปัญหาในการค้นหาองค์ประกอบอาร์เรย์ที่มีความถี่เฉพาะ เราได้รับสตริงของอาร์เรย์ เราต้องหาความถี่ของอักขระและตรวจสอบว่าความถี่เป็นจำนวนเฉพาะแล้วนับองค์ประกอบที่มีความถี่เฉพาะหรือไม่
มาดูตัวอย่างกัน
Input: str = “helloworld” Output: 2
คำอธิบาย
จำนวนการเกิดของอักขระคือ −
h -> 1 e -> 1 l -> 3 o -> 2 w-> 1 r -> 1 d -> 1
l เกิดขึ้นจำนวนเฉพาะของจำนวนครั้งเช่น 3 และ o เกิดขึ้นจำนวนเฉพาะเช่น 2
เริ่มสำรวจสตริงและนับการเกิดขึ้นของอักขระแต่ละตัวโดยใช้แผนที่ใน C++ และตรวจสอบว่าการเกิดขึ้นเป็นจำนวนเฉพาะหรือไม่ หากเป็นจำนวนเฉพาะให้เพิ่มจำนวนขึ้นมิฉะนั้นจะไม่
อัลกอริทึม
ในการตรวจสอบความถี่เฉพาะขององค์ประกอบ เราจะตรวจสอบการเกิดขึ้นขององค์ประกอบ และตรวจสอบว่าการนับนั้นเป็นจำนวนเฉพาะหรือไม่ สำหรับสิ่งนี้ เราจะนำแผนที่มาพิจารณา
ตัวอย่าง
#include <iostream> #include <bits/stdc++.h> using namespace std; int check_prime(int n) { if (n <= 1) return 0; if (n <= 3) return 1; if (n % 2 == 0 || n % 3 == 0) return 0; for (int i = 5; i * i <= n; i = i + 6) if (n % i == 0 || n % (i + 2) == 0) return 0; return 1; } int countPrimeFrequent(string s) { int count = 0; unordered_map<char, int> mp; for (int i = 0; i < s.length(); i++) mp[s[i]]++; for (auto it = mp.begin(); it != mp.end(); it++) { if (check_prime(it->second)) count++; } return count; } int main() { string s = "helloworld"; cout << countPrimeFrequent(s); return 0; }
ผลลัพธ์
The repeat elements of the array are : 2