এই সমস্যায়, আমাদের ব্যবহারকারী দ্বারা স্ট্রিং স্ট্র দেওয়া হয়। এবং আমাদের শুধুমাত্র সেই অক্ষরগুলিকে প্রিন্ট করতে হবে যেগুলির ফ্রিকোয়েন্সিগুলি বিজোড় সংখ্যায় সংঘটিত হয়৷
এই সমস্যাটি সমাধান করার জন্য, আমাদের একটি স্ট্রিং-এ একটি অক্ষরের সংঘটনের মোট ফ্রিকোয়েন্সি খুঁজে বের করতে হবে। এবং শুধুমাত্র সেই স্ট্রিংয়ের অক্ষরগুলিকে মুদ্রণ করুন যেগুলির বিজোড় ফ্রিকোয়েন্সি রয়েছে৷
বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -
Input : adatesaas. Output : dte
ব্যাখ্যা −অক্ষরগুলি তাদের সংঘটনের ফ্রিকোয়েন্সি সহ −
a | 4 | ৷
d | 1 | ৷
t | 1 | ৷
e | 1 | ৷
s | 2 |
বিজোড় কম্পাঙ্কের অক্ষর হল d, t, e।
অ্যালগরিদম
এখন এই সমস্যাটি সমাধান করার জন্য একটি অ্যালগরিদম তৈরি করার চেষ্টা করা যাক −
Step 1 : Traverse the string and count the number of occurrences on characters of the string in an array. Step 2 : Traverse the frequency array and print only those characters whose frequency of occurrence is odd.
উদাহরণ
আসুন এই অ্যালগরিদমের উপর ভিত্তি করে একটি প্রোগ্রাম তৈরি করি -
#include <bits/stdc++.h> using namespace std; int main(){ string str = "asdhfjdedsa"; int n = str.length(); 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'] % 2 == 1) { cout << str[i]<<" , "; } } return 0; }
আউটপুট
d , h , f , j , d , e , d