Open In App

# 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.
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++

 `// C++ program to implement``// the above approach``#include ``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;``}`

## Java

 `// 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`

## Python3

 `# 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`

## C#

 `// 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`

## Javascript

 ``

Output:

`Yes`

Time Complexity: O(n)

Auxiliary Space: O(n)