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++
#include <bits/stdc++.h>
using namespace std;
bool isPalindrome(string str)
{
int l = 0;
int h = str.size() - 1;
while (h > l) {
if (str[l++] != str[h--]) {
return false ;
}
}
return true ;
}
string makeOddString(string str)
{
string odd = "" ;
for ( int i = 1; i < str.size();
i += 2) {
odd += str[i];
}
return odd;
}
string makeevenString(string str)
{
string even = "" ;
for ( int i = 0; i < str.size();
i += 2) {
even += str[i];
}
return even;
}
void checkevenOddPalindrome(string str)
{
string odd = makeOddString(str);
string even = makeevenString(str);
if (isPalindrome(odd)
&& isPalindrome(even))
cout << "Yes" << endl;
else
cout << "No" << endl;
}
int main()
{
string str = "abzzab" ;
checkevenOddPalindrome(str);
return 0;
}
|
Java
import java.util.*;
import java.io.*;
class GFG{
static boolean isPalindrome(String str)
{
int l = 0 ;
int h = str.length() - 1 ;
while (h > l)
{
if (str.charAt(l++) !=
str.charAt(h--))
return false ;
}
return true ;
}
static String makeOddString(String str)
{
String odd = "" ;
for ( int i = 1 ; i < str.length(); i += 2 )
{
odd += str.charAt(i);
}
return odd;
}
static String makeevenString(String str)
{
String even = "" ;
for ( int i = 0 ; i < str.length(); i += 2 )
{
even += str.charAt(i);
}
return even;
}
static void checkevenOddPalindrome(String str)
{
String odd = makeOddString(str);
String even = makeevenString(str);
if (isPalindrome(odd) && isPalindrome(even))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
public static void main(String[] args)
{
String str = "abzzab" ;
checkevenOddPalindrome(str);
}
}
|
Python3
def isPalindrome( Str ):
l = 0
h = len ( Str ) - 1
while (h > l):
if ( Str [l] ! = Str [h]):
return False
l + = 1
h - = 1
return True
def makeOddString( Str ):
odd = ""
for i in range ( 1 , len ( Str ), 2 ):
odd + = Str [i]
return odd
def makeevenString( Str ):
even = ""
for i in range ( 0 , len ( Str ), 2 ):
even + = Str [i]
return even
def checkevenOddPalindrome( Str ):
odd = makeOddString( Str )
even = makeevenString( Str )
if (isPalindrome(odd) and
isPalindrome(even)):
print ( "Yes" )
else :
print ( "No" )
Str = "abzzab"
checkevenOddPalindrome( Str )
|
C#
using System;
class GFG{
static bool isPalindrome( string str)
{
int l = 0;
int h = str.Length - 1;
while (h > l)
{
if (str[l++] != str[h--])
return false ;
}
return true ;
}
static string makeOddString( string str)
{
string odd = "" ;
for ( int i = 1; i < str.Length; i += 2)
{
odd += str[i];
}
return odd;
}
static string makeevenString( string str)
{
string even = "" ;
for ( int i = 0; i < str.Length; i += 2)
{
even += str[i];
}
return even;
}
static void checkevenOddPalindrome( string str)
{
string odd = makeOddString(str);
string even = makeevenString(str);
if (isPalindrome(odd) && isPalindrome(even))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
public static void Main()
{
string str = "abzzab" ;
checkevenOddPalindrome(str);
}
}
|
Javascript
<script>
function isPalindrome(str)
{
var l = 0;
var h = str.length - 1;
while (h > l)
{
if (str.charAt(l++) !=
str.charAt(h--))
return false ;
}
return true ;
}
function makeOddString(str)
{
var odd = "" ;
for ( var i = 1; i < str.length; i += 2)
{
odd += str.charAt(i);
}
return odd;
}
function makeevenString(str)
{
var even = "" ;
for ( var i = 0; i < str.length; i += 2)
{
even += str.charAt(i);
}
return even;
}
function checkevenOddPalindrome(str)
{
var odd = makeOddString(str);
var even = makeevenString(str);
if (isPalindrome(odd) && isPalindrome(even))
document.write( "Yes" );
else
document.write( "No" );
}
var str = "abzzab" ;
checkevenOddPalindrome(str);
</script>
|
Time Complexity: O(n)
Auxiliary Space: O(n)