#include <string>
#include <iostream>
using namespace std;
bool palindrome_internal( const string& s, string& reverse, int i )
{
if(i < s.size()){
reverse[i] = s[s.size()-(i+1)]; // first character in reverse is the last character in s
palindrome_internal( s , reverse , i + 1);
}
return s == reverse;
}
bool Palindrome(const string& s ){
string reversed { s }; // initialized here
return palindrome_internal( s , reversed , 0 ); // And passed to recursive function
}
int main()
{
cout << Palindrome( "example" ) << endl; // Not palindrome
cout << Palindrome( "repaper" ) << endl; // Palindrome
cout << Palindrome( "rotator" ) << endl; // Palindrome
cout << Palindrome( "madam" ) << endl; // Palindrome
cout << Palindrome( "" ) << endl; // Palindrome
cout << Palindrome( "" ) << endl; // Palindrome
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgcGFsaW5kcm9tZV9pbnRlcm5hbCggY29uc3Qgc3RyaW5nJiBzLCBzdHJpbmcmIHJldmVyc2UsIGludCBpICkKewogICAgaWYoaSA8IHMuc2l6ZSgpKXsKICAgICAgICByZXZlcnNlW2ldID0gc1tzLnNpemUoKS0oaSsxKV07IC8vIGZpcnN0IGNoYXJhY3RlciBpbiByZXZlcnNlIGlzIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBzCiAgICAgICAgcGFsaW5kcm9tZV9pbnRlcm5hbCggcyAsIHJldmVyc2UgLCBpICsgMSk7CiAgICB9CgogICAgcmV0dXJuIHMgPT0gcmV2ZXJzZTsKfQoKYm9vbCBQYWxpbmRyb21lKGNvbnN0IHN0cmluZyYgcyApewogICAgc3RyaW5nIHJldmVyc2VkIHsgcyB9OyAvLyBpbml0aWFsaXplZCBoZXJlCgogICAgcmV0dXJuIHBhbGluZHJvbWVfaW50ZXJuYWwoIHMgLCByZXZlcnNlZCAsIDAgKTsgLy8gQW5kIHBhc3NlZCB0byByZWN1cnNpdmUgZnVuY3Rpb24KfQoKaW50IG1haW4oKQp7CiAgICBjb3V0IDw8IFBhbGluZHJvbWUoICJleGFtcGxlIiApIDw8IGVuZGw7IC8vIE5vdCBwYWxpbmRyb21lCiAgICBjb3V0IDw8IFBhbGluZHJvbWUoICJyZXBhcGVyIiApIDw8IGVuZGw7IC8vIFBhbGluZHJvbWUKICAgIGNvdXQgPDwgUGFsaW5kcm9tZSggInJvdGF0b3IiICkgPDwgZW5kbDsgLy8gUGFsaW5kcm9tZQogICAgY291dCA8PCBQYWxpbmRyb21lKCAibWFkYW0iICkgPDwgZW5kbDsgLy8gUGFsaW5kcm9tZQogICAgY291dCA8PCBQYWxpbmRyb21lKCAiIiApIDw8IGVuZGw7IC8vIFBhbGluZHJvbWUKICAgIGNvdXQgPDwgUGFsaW5kcm9tZSggIiIgKSA8PCBlbmRsOyAvLyBQYWxpbmRyb21lCn0K