একটি স্ট্রিং দেওয়া থাকলে, এর অক্ষরগুলো রি-অ্যারেঞ্জ করে প্যালিনড্রোম বানাতে হবে। অক্ষর যোগ বা বাদ দেওয়া যাবে না। না পারলে "NOT POSSIBLE" ফেরত দিন।
উদাহরণ
ইনপুট − str = "itnin"
আউটপুট − Rearrangement ... is: nitin
ইনপুট − str = "baaaba"
আউটপুট − Rearrangement ... is: aabbaa
প্রোগ্রামে ব্যবহৃত পদ্ধতি
স্ট্রিং
strও দৈর্ঘ্যlengthনিন।Rearrangement(str, length)ফাংশন কল করুন।ফাংশনে
unordered_mapদিয়ে ফ্রিকোয়েন্সি গণনা করুন।um বিজোড় ফ্রিকোয়েন্সি वाले অক্ষরগুলো গণনা করুন (
total)।যদি
total > 1বাtotal==1 && length%2==0হয়, ০ ফেরত দিন (NOT POSSIBLE)।অর্ধেক ফ্রিকোয়েন্সি দিয়ে বামপাশ
str_1, ডানপাশstr_2বানান।যদি
total==1হয়, মাঝপথে বিজোড় অক্ষরchযোগ করুন।str_1 + ch + str_2বাstr_1 + str_2ফেরত দিন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
string Rearrangement(string str, int length){
unordered_map um;
int total = 0;
char ch;
string str_1 = "", str_2 = "";
for (int i = 0; i < length; i++){
um[str[i]]++;
}
for(auto it : um){
if(it.second % 2 != 0){
total++;
ch = it.first;
}
}
if(total > 1 || (total == 1 && length % 2 == 0)){
return "0"; // NOT POSSIBLE
}
for(auto it : um){
string s(it.second / 2, it.first);
str_1 = str_1 + s;
str_2 = s + str_2;
}
if(total == 1){
return str_1 + ch + str_2;
}
else{
return str_1 + str_2;
}
}
int main(){
string str = "itnin";
int length = str.size();
cout << "Rearrangement of characters to form palindrome if possible is: " << Rearrangement(str, length);
return 0;
}
আউটপুট
উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:
Rearrangement of characters to form palindrome if possible is: nitin