C++ Program to check if a given String is Palindrome or not

In this blog post, you will learn how to write a C++ Program to check if a given String is Palindrome or not. But before writing the C++ code if a given String is Palindrome or not first let’s understand what a palindrome string is.

A string is called a palindrome string if the reverse of the given string is the same as the original string. For example, The string “amlma” is a palindrome because the reverse of the string is the same as the original string.

Approach 1:

Here I will use the inbuilt reverse() function to check whether a string is palindrome. Let’s consider the below example,

In this approach, you have to follow the below-mentioned steps:

  • Copy the string str to another temporary string copyString.
  • Reverse the string copyString.
  • Now check if the string str equals the string copyString, and then print “String is Palindrome”. Otherwise, print “String is not Palindrome“.
#include <vector>
#include <iostream>
// algorithm needs to be included to use std::reverse()
#include <algorithm>

using namespace std;

int main()
{
    string str = "amlma";

    //Copy the original string
    string copyString = str;

    //Use the reverse to reverse string
    reverse(copyString.begin(), copyString.end());
    
    // If str is equal to copyString
    if(str == copyString)
    {
        cout << "String is Palindrome" <<endl;
    }
    else
    {
        cout << "String is Not Palindrome" <<endl;
    }

    return 0;
}

Output:

String is Palindrome

 

Approach 2: By Traversing the String

It is an optimized way to check whether a string is palindrome. In this approach, you have to follow the below-mentioned steps:

  • Iterate over the range [0, L/2], where L is the length of the string.
  • Make two indexes l (low) and h (high) respectively.
  • Initialized the l with 0 and h with (L-1), where 0 is the index of the first element and (L-1) is the index of the last element.
  • Using the variables l and h in each iteration check if the characters at index I and h are equal or not.
  • If equal increment l and decrement the h otherwise break the loop.
#include <vector>
#include <iostream>
// algorithm needs to be included to use std::reverse()
#include <algorithm>

using namespace std;


bool isPalindrome(string S)
{
    int l = 0;
    int h = (S.length() - 1);
    bool isPalindromeString = true;

    // Iterate over the range [0, N/2]
    for (int i = 0; i < S.length() / 2; ++i)
    {
        // If S[l] is not equal to
        // the S[h]
        if (S[l++] != S[h--])
        {
            isPalindromeString = false;
            break;
        }
    }

    return isPalindromeString;
}

int main()
{
    string str = "amlma";

    const bool isPalindromeString = isPalindrome(str);
    if(isPalindromeString)
    {
        cout << "String is Palindrome" <<endl;
    }
    else
    {
        cout << "String is Not Palindrome" <<endl;
    }

    return 0;
}

Output:

String is Palindrome

 

Approach 3: By Using std::equal()

You can check whether the string is palindrome or not by comparing the first half of the string with the latter half, in reverse. Consider the below example code,

#include <vector>
#include <iostream>
// algorithm needs to be included to use std::reverse()
#include <algorithm>

using namespace std;



int main()
{
    string str = "amlma";

    const bool ret =  equal(str.begin(), str.begin() + str.size()/2, str.rbegin());
    if(ret)
    {
        cout << "String is Palindrome" <<endl;
    }
    else
    {
        cout << "String is Not Palindrome" <<endl;
    }

    return 0;
}

 

 

 

Recommended Articles for you: