# Check whether the given string is Palindrome using Stack

• Difficulty Level : Medium
• Last Updated : 13 Aug, 2021

Given string str, the task is to find whether the given string is a palindrome or not using a stack.

Examples:

Input: str = “geeksforgeeks”
Output: No
Output: Yes

Approach:

• Find the length of the string say len. Now, find the mid as mid = len / 2.
• Push all the elements till mid into the stack i.e. str[0…mid-1].
• If the length of the string is odd then neglect the middle character.
• Till the end of the string, keep popping elements from the stack and compare them with the current character i.e. string[i].
• If there is a mismatch then the string is not a palindrome. If all the elements match then the string is a palindrome.

Below is the implementation of the above approach:

## C++

 // C++ implementation of the approach#include using namespace std; // Function that returns true// if string is a palindromebool isPalindrome(string s){    int length = s.size();     // Creating a Stack    stack st;     // Finding the mid    int i, mid = length / 2;     for (i = 0; i < mid; i++) {        st.push(s[i]);    }     // Checking if the length of the string    // is odd, if odd then neglect the    // middle character    if (length % 2 != 0) {        i++;    }       char ele;    // While not the end of the string    while (s[i] != '\0')    {         ele = st.top();         st.pop();     // If the characters differ then the    // given string is not a palindrome    if (ele != s[i])        return false;        i++;    } return true;} // Driver codeint main(){    string s = "madam";     if (isPalindrome(s)) {        cout << "Yes";    }    else {        cout << "No";    }     return 0;} // This Code is Contributed by Harshit Srivastava

## C

 // C implementation of the approach#include #include #include #include  char* stack;int top = -1; // push functionvoid push(char ele){    stack[++top] = ele;} // pop functionchar pop(){    return stack[top--];} // Function that returns 1// if str is a palindromeint isPalindrome(char str[]){    int length = strlen(str);     // Allocating the memory for the stack    stack = (char*)malloc(length * sizeof(char));     // Finding the mid    int i, mid = length / 2;     for (i = 0; i < mid; i++) {        push(str[i]);    }     // Checking if the length of the string    // is odd, if odd then neglect the    // middle character    if (length % 2 != 0) {        i++;    }     // While not the end of the string    while (str[i] != '\0') {        char ele = pop();         // If the characters differ then the        // given string is not a palindrome        if (ele != str[i])            return 0;        i++;    }     return 1;} // Driver codeint main(){    char str[] = "madam";     if (isPalindrome(str)) {        printf("Yes");    }    else {        printf("No");    }     return 0;}

## Java

 // Java implementation of the approachclass GFG{static char []stack;static int top = -1; // push functionstatic void push(char ele){    stack[++top] = ele;} // pop functionstatic char pop(){    return stack[top--];} // Function that returns 1// if str is a palindromestatic int isPalindrome(char str[]){    int length = str.length;     // Allocating the memory for the stack    stack = new char[length * 4];     // Finding the mid    int i, mid = length / 2;     for (i = 0; i < mid; i++)    {        push(str[i]);    }     // Checking if the length of the String    // is odd, if odd then neglect the    // middle character    if (length % 2 != 0)    {        i++;    }     // While not the end of the String    while (i < length)    {        char ele = pop();         // If the characters differ then the        // given String is not a palindrome        if (ele != str[i])            return 0;        i++;    }     return 1;} // Driver codepublic static void main(String[] args){    char str[] = "madam".toCharArray();     if (isPalindrome(str) == 1)    {        System.out.printf("Yes");    }    else    {        System.out.printf("No");    }}} // This code is contributed by PrinciRaj1992

## Python3

 # Python3 implementation of the approachstack = []top = -1 # push functiondef push(ele: str):    global top    top += 1    stack[top] = ele # pop functiondef pop():    global top    ele = stack[top]    top -= 1    return ele # Function that returns 1# if str is a palindromedef isPalindrome(string: str) -> bool:    global stack    length = len(string)     # Allocating the memory for the stack    stack = ['0'] * (length + 1)     # Finding the mid    mid = length // 2    i = 0    while i < mid:        push(string[i])        i += 1     # Checking if the length of the string    # is odd, if odd then neglect the    # middle character    if length % 2 != 0:        i += 1     # While not the end of the string    while i < length:        ele = pop()         # If the characters differ then the        # given string is not a palindrome        if ele != string[i]:            return False        i += 1    return True # Driver Codeif __name__ == "__main__":     string = "madam"     if isPalindrome(string):        print("Yes")    else:        print("No") # This code is contributed by# sanjeev2552

## C#

 // C# implementation of the approachusing System; class GFG{ static char []stack;static int top = -1; // push functionstatic void push(char ele){    stack[++top] = ele;} // pop functionstatic char pop(){    return stack[top--];} // Function that returns 1// if str is a palindromestatic int isPalindrome(char []str){    int length = str.Length;     // Allocating the memory for the stack    stack = new char[length * 4];     // Finding the mid    int i, mid = length / 2;     for (i = 0; i < mid; i++)    {        push(str[i]);    }     // Checking if the length of the String    // is odd, if odd then neglect the    // middle character    if (length % 2 != 0)    {        i++;    }     // While not the end of the String    while (i < length)    {        char ele = pop();         // If the characters differ then the        // given String is not a palindrome        if (ele != str[i])            return 0;        i++;    }    return 1;} // Driver codepublic static void Main(String[] args){    char []str = "madam".ToCharArray();     if (isPalindrome(str) == 1)    {        Console.Write("Yes");    }    else    {        Console.Write("No");    }}} // This code is contributed by 29AjayKumar

## Javascript



Output:

Yes

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

My Personal Notes arrow_drop_up