C Program to Check Whether a String Is a Palindrome

Palindrome string

C programs to check whether a string is a palindrome have been shown here. A string is called a palindrome if the same string is obtained when the string is reversed. For example, the string "madam" is a palindrome as we get the same string "madam" while reading from left to right or right to left. But the string "cat" is not a palindrome as we get "tac" after reading the string from right to left.

Here both of the iterative and recursive approaches have been covered. Another approach of string comparison using inbuilt functions like strcmp() and strrev() have also been shown. The algorithm, pseudocode and time complexity of the program have been provided below.






1. Algorithm to check whether a string is a palindrome


1. Take a string $str$ and the size $n$ as inputs.

2. Check for each $i$ from 0 to $n/2 - 1$, if $str[i] = str[n - 1 - i]$.

3. If all the comparisions return true, declare $str$ as a palindrome.

4. Else declare $str$ as not a palindrome.





2. Pseudocode to check whether a string is a palindrome


Input: A string $str$ and size of string $n$

Output: $str$ is a palindrome or not

1. Procedure checkPalindrome($str$, $n$):

2. Repeat for $i \in [0, n / 2)$:

3. If $str[i] \neq str[n - 1- i] $

4. Return "not palindrome"

5. Return "palindrome"

6. End Procedure





3. Time complexity to check whether a string is a palindrome


Time Complexity: O(n)

Here $n$ is the length of the string.





4. C Program & output to check whether a string is a palindrome using Iteration

Code has been copied
/**********************************************
           alphabetacoder.com
    C program to check whether a string is a 
    palindrome or not using iteration
**********************************************/

#include <stdio.h>
#include <string.h>

int main() {
    // declare character array to store strings
    char str[30];
    // declare variables
    int i, length, flag = 0;

    // take input of string
    printf("Enter the string: ");
    scanf("%s", str);

    // calculate the length of string
    length = strlen(str);

    // divide the array in two parts
    // compare charcaters of the left part to the right part
    // traverse left part from left to right direction
    // traverse right part from right to left direction
    for (i = 0; i < (length / 2); i++) {
        // check for character mismatch 
        if (str[i] != str[length - 1 - i]) {
            printf("%s is not a palindrome string!\n", str);
            flag = 1;
            break;
        }
    }

    // if flag = 0, the string is palindrome 
    if (flag == 0)
        printf("%s is a palindrome string!\n", str);

    return 0;
}

Output


Case 1:

Enter the string: level

level is a palindrome string!


Case 2:

Enter the string: music

music is not a palindrome string!




5. C Program to check whether a string is a palindrome using strrev( ) and strcmp( ) functions

Code has been copied
/**********************************************
           alphabetacoder.com
    C program to check whether a string is a 
    palindrome or not using inbuilt functions
**********************************************/

#include <stdio.h>
#include <string.h>

int main() {
    // declare character arrays to store strings
    char str[30], rev[30];

    // take input of string
    printf("Enter the string: ");
    scanf("%s", str);

    // copy the string str to rev
    strcpy(rev, str);

    // reverse the string rev using strrev() 
    strrev(rev);

    // compare strings str and rev using strcmp()
    // check if both str and rev are same
    if (strcmp(str, rev) == 0)
        printf("%s is a palindrome string!\n", str);
    else
        printf("%s is not a palindrome string!\n", str);

    return 0;
}



6. C Program to check whether a string is a palindrome using recursion

Code has been copied
/********************************************
            alphabetacoder.com
    C program to check whether a string is 
    a palindrome or not using recursion
*********************************************/

#include <stdio.h>
#include <string.h>

// function to check if a string is a palindrome
int check_palindrome(char * s, int i) {
    // exit condition of recursive call
    if (i == strlen(s) / 2)
        return 1;
    // compare the characters
    // if mismatch found then return 0
    if (s[i] != s[strlen(s) - 1 - i])
        return 0;
    // call function
    return check_palindrome(s, i + 1);
}

int main() {
    // declare character array to store strings
    char str[30];
    // declare variables
    int length, result;

    // take input of string
    printf("Enter the string: ");
    scanf("%s", str);

    // calculate the length of string
    length = strlen(str);

    // call function to check whether
    // str is palindrome
    // function check_palindrome() takes
    // string str and first charcater index 0
    // as parameters
    result = check_palindrome(str, 0);

    // if result = 1, the string is palindrome
    if (result == 1)
        printf("%s is a palindrome string!\n", str);
    else
        printf("%s is not a palindrome string!\n", str);

    return 0;
}