এখানে আমরা দেখব, একটি স্ট্রিং নির্দিষ্ট ঘূর্ণনের পরে প্যালিনড্রোম হয় নাকি না। একটি প্যালিনড্রোম একটি স্ট্রিং যা উভয় দিক একই। একটি স্ট্রিং ঘূর্ণন একটি প্যালিনড্রোম যদি এটি AAAAD এর মতো হয়। এটি সরাসরি একটি প্যালিনড্রোম নয়, তবে এর ঘূর্ণন AADAA হল একটি প্যালিনড্রোম৷
একটি স্ট্রিং প্যালিনড্রোম ঘোরানো হয়েছে কিনা তা পরীক্ষা করার জন্য, আমরা এটি একটি প্যালিনড্রোম কিনা তা প্রথমবার পরীক্ষা করব, তারপরে, এটিকে একটি অক্ষর দ্বারা ঘোরান, তারপরে আবার পরীক্ষা করুন, এই চেকিংটি সময় n পরিমাণে সঞ্চালিত হবে, যেখানে n অক্ষরের সংখ্যা।
উদাহরণ
#include <iostream> #include <string> #include <algorithm> using namespace std; bool isPalindromeRange(string str, int left, int right){ return (left >= right) || (str[left] == str[right] && isPalindromeRange(str, left + 1, right - 1)); } bool isRotatedPalindrome(string str){ int len = str.length(); for (int i = 0; i < len; i++){ rotate(str.begin(), str.begin() + 1, str.end()); if (isPalindromeRange(str, 0, len - 1)) //if rotated string is palindrome, then return true return true; } return false; } int main(){ string str = "AAAAD"; //AADAA is palindrome //rotate(str.begin(), str.begin() + 2, str.end()); if (isRotatedPalindrome(str)) cout << "Its rotation is palindrome"; else cout << "Its rotation is not palindrome"; }
আউটপুট
Its rotation is palindrome