I have a challenge for you. Is there a problem with this code? It compiles without warnings, and runs as expected. I’ll reveal all next week. Have fun!
g++ -g -Wall palindrome_problem.cpp
#include <iostream>
#include <string.h>
using namespace std;
char* isPalindrome(char* word)
{
char* ret = 0;
ret = (char*)"Yes! This is a palindrome.";
char *p = word;
int len = strlen(word);
char *q = &word[len-1];
for (int i = 0 ; i < len ; ++i, ++p, --q)
{
if (*p != *q)
{
ret = (char*)"This is not a palindrome.";
}
}
return ret;
}
int main()
{
while (1)
{
char buffer[16] = {0};
cin >> buffer;
char* result = isPalindrome(buffer);
cout << result << endl;
}
return 0;
}
I will give it a try; buffer variable is only 16 bytes so it will not be able to recognize bigger palindrome strings than that?
One thing which I can point out is efficiency. Why we need to loop through the whole length of the string, if it is a palindrome?