This article will discuss different ways to check if a string is palindrome or not in C++.
Table of Contents
- Check if a string is palindrome using STL Algorithm equal()
- Check if a string is palindrome using for loop
- Check if a string is palindrome using STL Algorithm reverse()
There are different ways to do this. Let’s discuss them one by one,
Check if a string is palindrome using STL Algorithm equal()
To verify if a string is a palindrome, we need to compare the first half with the reversed second half of the String. For example, if String is of length N, then compare,
- Character at index 0 with character at index N-1
- Character at index 1 with character at index N-2
- Character at index 2 with character at index N-3
- ..
- ..
- Character at index n/2-1 with character at index (N-N/2)
If all the above comparisons return true, it means String is a palindrome.
Standard Template Library in C++ provides a function std::equal(). It compares two ranges for element-wise equality, and if all elements in two ranges are equal, it returns true, otherwise false. We can use this to check if String is a palindrome by matching the first half of String with the reversed second half of String i.e.
#include <iostream> #include <string> #include<algorithm> using namespace std; /* This function returns true if a give string is a palindrome, otherwise returns false. */ bool is_palindrome(string input_str) { int len = input_str.length(); return equal( input_str.begin(), input_str.begin() + len/2, input_str.rbegin(), input_str.rbegin() + len/2 ); } int main() { cout<< is_palindrome("abccbad") << endl; cout<< is_palindrome("abccba") <<endl; cout<< is_palindrome("abcdcba") <<endl; cout<< is_palindrome("12abcdcba21") <<endl; cout<< is_palindrome("87655778") <<endl; return 0; }
Output
Frequently Asked:
0 1 1 1 0
Analysis of the Output:
- The string “abccbad” is not a palindrome; therefore, it returned false.
- The string “abccba” is not a palindrome; therefore, it returned true.
- The string “abcdcba” is not a palindrome; therefore, it returned true.
- The string “12abcdcba21” is not a palindrome; therefore, it returned true.
- The string “87655778” is not a palindrome; therefore, it returned false.
Check if String is palindrome using for loop
If you don’t want to use the equal() function, then you can iterate over the String and compare,
- Character at index 0 with character at index N-1
- Character at index 1 with character at index N-2
- Character at index 2 with character at index N-3
- ..
- ..
- Character at index n/2-1 with character at index (N-N/2)
Where N is the size of String, if all the comparisons return True then it means String is a palindrome. For example,
#include <iostream> #include <string> using namespace std; /* This function returns true if a give string is a palindrome, otherwise returns false. */ bool is_palindrome(string input_str) { bool result = true; int len = input_str.length(); for(int i = 0 ; i < len/2 ; i++) { if(input_str[i] != input_str[len -1 -i] ) { result = false; break; } } return result; } int main() { cout<< is_palindrome("abccbad") << endl; cout<< is_palindrome("abccba") <<endl; cout<< is_palindrome("abcdcba") <<endl; cout<< is_palindrome("12abcdcba21") <<endl; cout<< is_palindrome("87655778") <<endl; return 0; }
Output
0 1 1 1 0
Check if String is palindrome using reverse()
If the reverse of a string is equal to the original String, it means the String is a palindrome. Let’s see how to do that,
#include <iostream> #include <string> #include<algorithm> using namespace std; /* This function returns true if a give string is a palindrome, otherwise returns false. */ bool is_palindrome(string input_str) { std::string new_str(input_str); std::reverse(new_str.begin(), new_str.end()); return (new_str == input_str); } int main() { cout<< is_palindrome("abccbad") << endl; cout<< is_palindrome("abccba") <<endl; cout<< is_palindrome("abcdcba") <<endl; cout<< is_palindrome("12abcdcba21") <<endl; cout<< is_palindrome("87655778") <<endl; return 0; }
Output
0 1 1 1 0
Summary
We learned three different ways to check if a string is a palindrome in C++.