সমস্যা বিবৃতি
একটি স্ট্রিং দেওয়া হয়েছে, একটি স্ট্রিং প্যালিনড্রোম তৈরি করতে ন্যূনতম অক্ষরগুলি যুক্ত করতে হবে৷
উদাহরণ
যদি স্ট্রিং abcac হয় তাহলে আমরা 2টি হাইলাইড অক্ষর যেমন abcacba যোগ করে স্ট্রিং প্যালিনড্রোম তৈরি করতে পারি।
অ্যালগরিদম
- পরীক্ষা করুন যে স্ট্রিংটি ইতিমধ্যেই প্যালিনড্রোম কিনা, যদি হ্যাঁ হয় তবে কোনও অক্ষর যুক্ত করার দরকার নেই৷
- একের পর এক স্ট্রিং থেকে একটি অক্ষর মুছে ফেলুন এবং বাকি স্ট্রিং প্যালিনড্রোম কিনা তা পরীক্ষা করুন
- স্ট্রিং প্যালিড্রোম না হওয়া পর্যন্ত উপরের প্রক্রিয়াটি পুনরাবৃত্তি করুন
- একটি চূড়ান্ত উত্তর হিসাবে এখন পর্যন্ত সরানো অক্ষরের সংখ্যা ফেরত দিন
উদাহরণ
#include <iostream>
#include <cstring>
using namespace std;
bool isPalindrome(char *str) {
int n = strlen(str);
if (n == 1) {
return true;
}
int start = 0, end = n - 1;
while (start < end) {
if (str[start] != str[end]) {
return false;
}
++start;
--end;
}
return true;
}
int requiredAppends(char *str) {
if (isPalindrome(str)) {
return 0;
}
return 1 + requiredAppends(str + 1);
}
int main() {
char *str = "abcac";
cout << "Characters to be appended = " << requiredAppends(str) << endl;
return 0;
} আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেCharacters to be appended = 2