A Challenge

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;
}

2 Comments

  1. Posted 24 June 2015 at 15:18 | Permalink

    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?

  2. sanjay singh
    Posted 26 June 2015 at 09:32 | Permalink

    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?