Related Articles

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

• Difficulty Level : Basic
• Last Updated : 21 Jul, 2021

Given a string S consisting of N characters of the English alphabet, the task is to check if the given string is a palindrome. If the given string is a palindrome, then print “Yes“. Otherwise, print “No“.

Note: A string is said to be palindrome if the reverse of the string is the same as the string.

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.

Examples:

Input: S = “ABCDCBA”
Output: Yes
Explanation:
The reverse of the given string is equal to the (ABCDCBA) which is equal to the given string. Therefore, the given string is palindrome.

Input: S = “GeeksforGeeks”
Output: No
Explanation:
The reverse of the given string is equal to the (skeeGrofskeeG) which is not equal to the given string. Therefore, the given string is not a palindrome.

Naive Approach: The simplest approach to use the inbuilt reverse function in the STL. Follow the steps below to solve the problem:

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach``#include ``using` `namespace` `std;` `// Function to check whether``// the string is palindrome``string isPalindrome(string S)``{``    ``// Stores the reverse of the``    ``// string S``    ``string P = S;` `    ``// Reverse the string P``    ``reverse(P.begin(), P.end());` `    ``// If S is equal to P``    ``if` `(S == P) {``        ``// Return "Yes"``        ``return` `"Yes"``;``    ``}``    ``// Otherwise``    ``else` `{``        ``// return "No"``        ``return` `"No"``;``    ``}``}` `// Driver Code``int` `main()``{``    ``string S = ``"ABCDCBA"``;``    ``cout << isPalindrome(S);` `    ``return` `0;``}`
Output
`Yes`

Time Complexity: O(N)
Auxiliary Space: O(N)

Efficient Approach: The above approach can be optimized in space complexity by traversing the string and checking whether the character at ith index is equal to the character at the (N-i-1)th index for every index in the range [0, N/2]. Follow the steps below to solve the problem:

• Iterate over the range [0, N/2], using the variable i and in each iteration check if the character at index i and N-i-1 are not equal, then print “No” and break.
• If none of the above cases satisfy, then print “Yes“.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach``#include ``using` `namespace` `std;` `// Function to check whether string``// is palindrome``string isPalindrome(string S)``{``    ``// Iterate over the range [0, N/2]``    ``for` `(``int` `i = 0; i < S.length() / 2; i++) {` `        ``// If S[i] is not equal to``        ``// the S[N-i-1]``        ``if` `(S[i] != S[S.length() - i - 1]) {``            ``// Return No``            ``return` `"No"``;``        ``}``    ``}``    ``// Return "Yes"``    ``return` `"Yes"``;``}` `// Driver Code``int` `main()``{``    ``string S = ``"ABCDCBA"``;``    ``cout << isPalindrome(S);` `    ``return` `0;``}`
Output:
`Yes`

Time Complexity: O(N)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up