Friday, April 22, 2011

Checking if String is Palindrome in C Recursively

Palindrome String :  are those string which is same if you read it backwards."MADAM" or "AABBCCCCBBAA" are palindrome strings. But "ABBC" is not


Recursive Method: Why would you use recursive method when you have a really easy non recursive method? Anyways here is a (rather unoptimised) way to do it in C.
we create a function and pass string , first chars index and last chars index to match, then call it recursively if it matches (Pretty clever right ).

Code:
#include<stdio.h>
#include<string.h>//for strlen function
int checkPalindromeStr(char* p, int start, int end)// here start and end are index of strat char and end char to match
{
    if(start>end)
    {
        return(1);
    }
    else if(*(p+start)==*(p+end))
    {
        checkPalindromeStr(p,start+1,end-1);//recursive call for next char to match    
    }
    else
    {
        return(0);
    }
}
void main()
{
    char* s="aabaa";
    int l;
    l=strlen(s);
    if(checkPalindromeStr(s,0,l-1))// we start by matching 0th char with last char
    {
        printf("\n String is Palindrome\n");
    }
    else
    {
        printf("\n String is not Palindrome\n");
    }
}

2 comments: