यहां हम देखेंगे, एक स्ट्रिंग निश्चित रोटेशन के बाद पैलिंड्रोम है या नहीं। पैलिंड्रोम एक स्ट्रिंग है जो दोनों दिशाओं में समान होती है। एक स्ट्रिंग रोटेशन एक पैलिंड्रोम है यदि वह 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