Check if a given string is Even-Odd Palindrome or not

Given a string str, the task is to check if the given string is Even-Odd Palindrome or not. 

An Even-Odd Palindrome string is defined to be a string whose characters at even indices form a Palindrome while the characters at odd indices also form a Palindrome separately. 

Examples: 

Input: str=”abzzab” 
Output:YES 
Explanation: 
String formed by characters at odd indices: bzb, which is a Palindrome. 
String formed by characters at even indices: aza, which is a Palindrome. 
Hence, the given string is an Even-Odd Palindrome.

Input: str=”daccad” 
Output: NO 



Approach: To solve the problem, create a new String by appending the Odd Indexed Characters of the given string and check if the strings formed are palindromic or not. Similarly, check for Even Indexed Characters. If both the strings are palindromic, then print “Yes”. Otherwise, print “No”.

Below is the implementation of the above approach: 

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to check if the string
// str is palindromic or not
bool isPalindrome(string str)
{
  
    // Pointers to iterate the
    // string from both ends
    int l = 0;
    int h = str.size() - 1;
  
    while (h > l) {
  
        // If characters are found
        // to be distinct
        if (str[l++] != str[h--]) {
            return false;
        }
    }
  
    // Return true if the
    // string is palindromic
    return true;
}
  
// Function to generate string
// from characters at odd indices
string makeOddString(string str)
{
    string odd = "";
    for (int i = 1; i < str.size();
         i += 2) {
        odd += str[i];
    }
  
    return odd;
}
  
// Function to generate string
// from characters at even indices
string makeevenString(string str)
{
    string even = "";
    for (int i = 0; i < str.size();
         i += 2) {
        even += str[i];
    }
  
    return even;
}
  
// Functions to checks if string
// is Even-Odd Palindrome or not
void checkevenOddPalindrome(string str)
{
  
    // Generate odd indexed string
    string odd = makeOddString(str);
  
    // Generate even indexed string
    string even = makeevenString(str);
  
    // Check for Palindrome
    if (isPalindrome(odd)
        && isPalindrome(even))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}
  
// Driver Code
int main()
{
    string str = "abzzab";
  
    checkevenOddPalindrome(str);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program implementation
// of the approach
import java.util.*;
import java.io.*;
  
class GFG{
  
// Function to check if the string 
// str is palindromic or not 
static boolean isPalindrome(String str) 
  
    // Pointers to iterate the 
    // string from both ends 
    int l = 0
    int h = str.length() - 1
  
    while (h > l) 
    
          
        // If characters are found 
        // to be distinct 
        if (str.charAt(l++) != 
            str.charAt(h--)) 
            return false;
    
  
    // Return true if the 
    // string is palindromic 
    return true
  
// Function to generate string 
// from characters at odd indices 
static String makeOddString(String str) 
    String odd = ""
      
    for(int i = 1; i < str.length(); i += 2)
    
        odd += str.charAt(i); 
    
  
    return odd; 
  
// Function to generate string 
// from characters at even indices 
static String makeevenString(String str) 
    String even = ""
      
    for(int i = 0; i < str.length(); i += 2)
    
        even += str.charAt(i); 
    
  
    return even; 
  
// Functions to checks if string 
// is Even-Odd Palindrome or not 
static void checkevenOddPalindrome(String str) 
  
    // Generate odd indexed string 
    String odd = makeOddString(str); 
  
    // Generate even indexed string 
    String even = makeevenString(str); 
  
    // Check for Palindrome 
    if (isPalindrome(odd) && isPalindrome(even)) 
        System.out.println("Yes"); 
    else
        System.out.println("No"); 
  
// Driver code 
public static void main(String[] args) 
{
    String str = "abzzab"
  
    checkevenOddPalindrome(str); 
}
}
  
// This code is contributed by sanjoy_62

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to implement
# the above approach
  
# Function to check if the string 
# str is palindromic or not 
def isPalindrome(Str):
  
    # Pointers to iterate the 
    # string from both ends 
    l = 0
    h = len(Str) - 1
  
    while (h > l):
  
        # If characters are found 
        # to be distinct 
        if (Str[l] != Str[h]):
            return False
  
        l += 1
        h -= 1
  
    # Return true if the 
    # string is palindromic 
    return True
  
# Function to generate string 
# from characters at odd indices 
def makeOddString(Str):
  
    odd = ""
    for i in range(1, len(Str), 2):
        odd += Str[i]
  
    return odd
  
# Function to generate string 
# from characters at even indices 
def makeevenString(Str):
  
    even = ""
    for i in range(0, len(Str), 2):
        even += Str[i]
  
    return even
  
# Functions to checks if string 
# is Even-Odd Palindrome or not 
def checkevenOddPalindrome(Str):
  
    # Generate odd indexed string 
    odd = makeOddString(Str)
  
    # Generate even indexed string 
    even = makeevenString(Str)
  
    # Check for Palindrome
    if (isPalindrome(odd) and
        isPalindrome(even)):
        print("Yes")
    else:
        print("No")
  
# Driver code
Str = "abzzab"
  
checkevenOddPalindrome(Str)
  
# This code is contributed by himanshu77

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program implementation
// of the approach
using System;
  
class GFG{
      
// Function to check if the string 
// str is palindromic or not 
static bool isPalindrome(string str) 
      
    // Pointers to iterate the 
    // string from both ends 
    int l = 0; 
    int h = str.Length - 1; 
  
    while (h > l) 
    
        // If characters are found 
        // to be distinct 
        if (str[l++] != str[h--]) 
            return false;
    
  
    // Return true if the 
    // string is palindromic 
    return true
  
// Function to generate string 
// from characters at odd indices 
static string makeOddString(string str) 
    string odd = "";
      
    for(int i = 1; i < str.Length; i += 2)
    
        odd += str[i]; 
    
  
    return odd; 
  
// Function to generate string 
// from characters at even indices 
static string makeevenString(string str) 
    string even = ""
      
    for(int i = 0; i < str.Length; i += 2)
    
        even += str[i]; 
    
  
    return even; 
  
// Functions to checks if string 
// is Even-Odd Palindrome or not 
static void checkevenOddPalindrome(string str) 
  
    // Generate odd indexed string 
    string odd = makeOddString(str); 
  
    // Generate even indexed string 
    string even = makeevenString(str); 
  
    // Check for Palindrome 
    if (isPalindrome(odd) && isPalindrome(even)) 
        Console.WriteLine("Yes"); 
    else
        Console.WriteLine("No"); 
  
// Driver code 
public static void Main() 
{
    string str = "abzzab"
  
    checkevenOddPalindrome(str); 
}
}
  
// This code is contributed by sanjoy_62

chevron_right


Output: 

Yes

 

competitive-programming-img




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : sanjoy_62, himanshu77