Palindrome Program in C++ with Code: A Deep Dive for Beginners and Beyond

A palindrome is often called a word, phrase, number, or even a long sequence of characters that will just reads the same forward and backward. Classic examples of this type include:

Words of some type like: radar, level, madam, civic

Numbers are as follows: 121, 12321, 45654

Blogging Illustration

Palindrome Program in C++ with Code: A Deep Dive for Beginners and Beyond

image

Some of the interesting phrases (ignoring all kinds of spaces and punctuation): "A man, a plan, a canal, Panama"

In today's programming era, the palindrome category of problems is quite a common interview question. They’re not just academic, but they also help in sharpening your logic-building skills, along with the ability to prepare you for string manipulation, data structures, and also the best algorithm development.

This blog will particularly walk you through some of the multiple ways to create a type of Palindrome Program in C++ and also explain the logic behind this step-by-step, and later help you build great confidence in both types of string and number manipulation.

Why should you practise Palindrome Programs?

Before you look into the matter and jump into the code, let’s first understand why all this is such an important exercise among:

Logical Thinking area: You'll now learn how to compare and also reverse some of the best data.

Problem-solving ability: Helps you to work on a wide range of algorithmic skills.

Interviews: Often, these types of questions are asked in technical assessments and also in some of the coding rounds.

Practice with both Strings and Loops: You'll get quite comfortable with all C++ syntax and also some of the control structures.

The Table of Contents includes topics listed below :

1. Palindrome Program: Check for Strings

Using the Reversal trick

Using one of the Two-Pointer Techniques

2. Palindrome Program Check for Numbers

3. Palindrome Program Using Recursion

4. Interactive type of Palindrome Program

5. Conclusion for palindrome

<a name="1"></a>1.

Palindrome Check for Strings category.

Method 1: Using the String Reversal method and logic

Here’s a simple C++ program that just checks whether a particular string is a palindrome by just reversing it.

                            
                    #include 
                    #include 
                    using namespace std;

                    int main() {
                        string str, rev;
                        cout << "Enter a string: ";
                        cin >> str;

                        rev = string(str.rbegin(), str.rend()); // Reverse using STL

                        if (str == rev)
                            cout << str << " is a palindrome." << endl;
                        else
                            cout << str << " is not a palindrome." << endl;

                        return 0;
                    }

                        

How It Often Works:

Both rbegin() and rend() are quite reverse iterators that one should use

The reversed string is often created and also later compared with the original one.

If both of these match → then it's a palindrome!

Method 2: Two-Pointer Technique of Palindrome

A more kind of manual and also interview-friendly approach is followed :

                            #include 
                    using namespace std;

                    bool isPalindrome(string str) {
                        int left = 0;
                        int right = str.length() - 1;

                        while (left < right) {
                            if (str[left] != str[right])
                                return false;
                            left++;
                            right--;
                        }
                        return true;
                    }

                    int main() {
                        string str;
                        cout << "Enter a string: ";
                        cin >> str;

                        if (isPalindrome(str))
                            cout << str << " is a palindrome." << endl;
                        else
                            cout << str << " is not a palindrome." << endl;

                        return 0;
                    }
                        

Why Use Types of Two Pointers?

Efficient: O(n/2) comparisons are done here.

Interviewers love it for both clarity and logic purposes.

Teaches you in-place checking without using any type of extra memory.

<a name="2"></a>2.

Palindrome Check for Numbers program.

You can also easily check if a particular integer is a palindrome, like numbers 121 or 1331.

Method: Reverse the Number program

                            #include 
                        using namespace std;

                        bool isPalindrome(int num) {
                            int original = num;
                            int reversed = 0;

                            while (num > 0) {
                                int digit = num % 10;
                                reversed = reversed * 10 + digit;
                                num /= 10;
                            }

                            return original == reversed;
                        }

                        int main() {
                            int num;
                            cout << "Enter an integer: ";
                            cin >> num;

                            if (isPalindrome(num))
                                cout << num << " is a palindrome." << endl;
                            else
                                cout << num << " is not a palindrome." << endl;

                            return 0;
                        }
                            
                        

Logic Breakdown:

Extract the last digit using one of the % 10.

Build the best reversed number with by digit-by-digit concept.

Compare all this with the original ones.

<a name="3"></a>3.

Palindrome Using Recursion program

Recursive types of solutions often help you to develop a deeper kind of understanding of different function calls.

Recursive String Palindrome Program

                            #include 
                        using namespace std;

                        bool isPalindrome(string str, int start, int end) {
                            if (start >= end)
                                return true;
                            if (str[start] != str[end])
                                return false;
                            return isPalindrome(str, start + 1, end - 1);
                        }

                        int main() {
                            string str;
                            cout << "Enter a string: ";
                            cin >> str;

                            if (isPalindrome(str, 0, str.length() - 1))
                                cout << str << " is a palindrome." << endl;
                            else
                                cout << str << " is not a palindrome." << endl;

                            return 0;
                        }                           
                        

What You Learn from.all this :

Base Case: When you do start >= end, we’re just done with all this.

Recursive Case: Keep on comparing all types of characters from all of these various ends.

Elegant, concise, and also great for preparing your best portfolio!

<a name="4"></a>4.

Interactive Palindrome Program with Case Ignoring at the same time

Now let’s build a program that has below features :

  • Accept some of the best long sentences.
  • Ignore both spaces and cases at the same time.

Advanced Palindrome Program with tolower() and isalnum()

Source code :

                            #include 
                    #include 
                    #include <>
                    using namespace std;

                    bool isAdvancedPalindrome(string str) {
                        string cleanStr = "";

                        for (char c: str) {
                            if (isalnum(c)) {
                                cleanStr += tolower(c);
                            }
                        }

                        int left = 0, right = cleanStr.length() - 1;
                        while (left < right) {
                            if (cleanStr[left] != cleanStr[right])
                                return false;
                            left++;
                            right--;
                        }

                        return true;
                    }

                    int main() {
                        string input;
                        cout << "Enter a phrase: ";
                        getline(cin, input);

                        if (isAdvancedPalindrome(input))
                            cout << "\"" << input << "\" is a palindrome." << endl;
                        else
                            cout << "\"" << input << "\" is not a palindrome." << endl;

                        return 0;
                    }
                            
                        

What’s New Information Here?

getline() will allow you some space-containing inputs.

isalnum() filters only letters and numbers.

tolower() ensures that it's a case-insensitive comparison.

Practical Use Cases of Palindromes in Real Life

While palindromes are often checked are some trending types like toy problems, they also have some real-world value too.

Cybersecurity

Detection of all mirrored patterns in some malware signatures is observed here.

Search Engines

Optimizing all search algorithms that just involve pattern matching.

Data Compression

Identifying all types of repeated patterns that can later be efficiently stored.

DNA Sequencing

Palindromic types of sequences are most common in some genetic structures.

Bonus Tips to Remember for ease in palindromes

Don’t ever forget to edge cases like one with empty strings or even a single character, as they are palindromes!

Strings with patterns like 123a321 are not just palindromes unless you're ignoring or not considering non-alphanumeric characters.

Prefer some getline() over the cin function for reading huge sentences.

Practice Challenges for You with Illustration

Level up your skills with these challenges:

1. Check if a sentence is a palindrome without using any library functions.

                            #include 
                            using namespace std;

                            // Function to manually check if a character is alphanumeric
                            bool isAlphanumeric(char c) {
                                if ((c >= 'a' && c <= 'z') || (c>= 'A' && c <= 'z') || (c>= '0' && c <= '9')) return true; false; } function to manually convert uppercase lowercase char tolowercase(char c) { if (c>= 'A' && c <= 32 'z') return c + 32; ascii difference between 'a' and is c; } function to check if the cleaned sentence a palindrome bool ispalindrome(string str) { int left="0;" right="str.length()" - 1; while (left < right) skip non-alphanumeric characters && !isalphanumeric(str[left])) left++; !isalphanumeric(str[right])) right--; compare after converting lowercase (tolowercase(str[left]) !="toLowerCase(str[right]))" false; true; main() string input; cout << "enter sentence: "; getline(cin, input); (ispalindrome(input)) "the palindrome." endl; else not 0; pre>
                    

Example of input and output

Enter a sentence: A man, a plan, a canal, Panama The sentence is a palindrome.

Enter a sentence: Hello World. The sentence is not a palindrome.

2. Find the longest palindromic substring in a given string.

                            #include 
                            using namespace std;

                            // Function to expand around the center and return the length of the palindrome
                            int expandFromCenter(const string& s, int left, int right) {
                                while (left >= 0 && right < s.length() && s[left] == s[right]) {
                                    left--;
                                    right++;
                                }
                                return right - left - 1; // Length of the current palindrome
                            }

                            // Function to find the longest palindromic substring
                            string longestPalindrome(string s) {
                                if (s.empty()) return "";

                                int start = 0, end = 0;

                                for (int i = 0; i < s.length(); i++) {
                                    int len1 = expandFromCenter(s, i, i);     // Odd-length palindrome
                                    int len2 = expandFromCenter(s, i, i + 1); // Even-length palindrome
                                    int len = max(len1, len2);

                                    if (len > end - start) {
                                        start = i - (len - 1) / 2;
                                        end = i + len / 2;
                                    }
                                }

                                return s.substr(start, end - start + 1);
                            }

                            int main() {
                                string input;
                                cout << "Enter a string: ";
                                cin >> input;

                                string result = longestPalindrome(input);
                                cout << "Longest Palindromic Substring: " << result << endl;

                                return 0;
                            }
                            
                        

Example of this :

Enter a string: babad Longest Palindromic Substring: Baby

You can check and implement the below 3 on your own from the above reference.

3. Check if a number is a palindrome without converting it to a string.

4. Build a palindrome checker that supports Unicode characters.

5. Create a program that lists all palindromes within a given range.

Enroll in the Data Structure and Algorithm training course in Noida for a better understanding.

Placed Students

Our Clients

Partners

Uncodemy Learning Platform

Uncodemy Free Premium Features

Popular Courses