This tutorial will discuss about a unique way to check if array is palindrome in C++.
To check if an array is palindrome or not, we need to comprare the first half of array with the reversed second half of array.
For example, suppose our array is,
int arr[] = {9, 5, 4, 3, 2, 3, 4, 5, 9};
Now to check if this array is a palindrome or not. We need to compare,
- 1st element of array with the last element of array.
- 2nd element of array with the second last element of array.
- ith element of array with the ith element from last in array.
This can be done using the STL Algorithm std::equal()
.
In the std::equal()
function, pass three arguments i.e.
- Pointer to the start of array i.e.
arr
- Pointer to the middle of array i.e.
arr + len/2
- A reverse iterator pointing to the end of array i.e.
std::reverse_iterator<int*>(arr + len)
It will compare all the elements from arr
to arr + len/2
, with the second half of array using reverse iterator. It will return truw if the first half of array is equal to the reversed second half of array.
Frequently Asked:
- Declare an Array in C++
- Check if Any element in Array matches a condition in C++
- Sort an Array in Ascending Order in C++ (6 Ways)
- Check if an Array is Palindrome in C++
Let’s see the complete example,
#include <iostream> #include <algorithm> int main() { int arr[] = {9, 5, 4, 3, 2, 3, 4, 5, 9}; // Get the length of array size_t len = sizeof(arr)/sizeof(arr[0]); // Compare the first half of array with the // reversed second half of array bool result = std::equal(arr, arr + len/2, std::reverse_iterator<int*>(arr + len)); // Check if array is Palindrome or not if(result) { std::cout<< "Yes, Array is a Palindrome." << std::endl; } else { std::cout<< "No, Array is not a Palindrome." << std::endl; } return 0; }
Output :
Yes, Array is a Palindrome.
Summary
Today we learned about a way to check if array is palindrome in C++. Thanks.