Skip to content
Related Articles
Check if an array has some palindromic subsequence of length at least 3
• Last Updated : 23 Mar, 2021

Given is an array Arr of integers. The task is to determine if the array has any subsequence of at least length 3 that is a palindrome.
Examples:

```Input: Arr[] = [1, 2, 1]
Output: YES
Explanation:
Here 1 2 1 is a palindrome.

Input: Arr[] = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
Output: NO
Explanation:
Here no subsequence of length at least 3
exists which is a palindrome.```

Approach:

• The idea is to check only for length 3 because if a palindromic subsequence of length greater than 3 exists then there is always a palindromic subsequence of length 3.

• To find the palindromic subsequence of length 3 we just need to find a pair of equal non-adjacent number.

Below is the implementation of the above approach:

## C++

 `// C++ code to check if``// palindromic subsequece of``// length atleast 3 exist or not``#include``using` `namespace` `std;` `string SubPalindrome(``int` `n, ``int` `arr[])``{``    ``bool` `ok = ``false``;``    ``for` `(``int` `i = 0; i < n; i++)``    ``{``        ``for``(``int` `j = i + 2; j < n; j++)``        ``{``            ``if``(arr[i] == arr[j])``                ``ok = ``true``;``        ``}``    ``}``    ``if``(ok)``        ``return` `"YES"``;``    ``else``        ``return` `"NO"``;``}``    `  `// Driver code``int` `main()``{` `    ``// Input values to list``    ``int` `Arr[] = {1, 2, 2, 3, 2};``    ` `    ``// Calculating length of array``    ``int` `N = ``sizeof``(Arr)/``sizeof``(Arr);``    ` `    ``cout << SubPalindrome(N, Arr);``}` `// This code is contributed by Bhupendra_Singh`

## Java

 `// Java code to check if``// palindromic subsequece of``// length atleast 3 exist or not` `import` `java.util.*;` `class` `GFG{`` ` `static` `String SubPalindrome(``int` `n, ``int` `arr[])``{``    ``boolean` `ok = ``false``;``    ``for` `(``int` `i = ``0``; i < n; i++)``    ``{``        ``for``(``int` `j = i + ``2``; j < n; j++)``        ``{``            ``if``(arr[i] == arr[j])``                ``ok = ``true``;``        ``}``    ``}``    ``if``(ok)``        ``return` `"YES"``;``    ``else``        ``return` `"NO"``;``}``     ` ` ` `// Driver code``public` `static` `void` `main(String[] args)``{`` ` `    ``// Input values to list``    ``int` `Arr[] = {``1``, ``2``, ``2``, ``3``, ``2``};``     ` `    ``// Calculating length of array``    ``int` `N = Arr.length;``     ` `    ``System.out.print(SubPalindrome(N, Arr));``}``}` `// This code contributed by sapnasingh4991`

## Python3

 `# Python 3 code to check if``# palindromic subsequece of``# length atleast 3 exist or not``def` `SubPalindrome (n, arr):``    ``ok ``=` `False``    ``for` `i ``in` `range``(n):``        ``for` `j ``in` `range``(i ``+` `2``, n):``            ``if` `arr[i] ``=``=` `arr[j]:``                ``ok ``=` `True``    ``return``(``'YES'` `if` `ok ``else` `'NO'``)` `# Driver code` `# Input values to list``Arr ``=` `[``1``, ``2``, ``2``, ``3``, ``2``]` `# Calculating length of the array``N ``=` `len``(arr)` `print` `(SubPalindrome(N, Arr))`

## C#

 `// C# code to check if``// palindromic subsequece of``// length atleast 3 exist or not``using` `System;` `public` `class` `GFG{` `static` `string` `SubPalindrome(``int` `n, ``int` `[]arr)``{``    ``bool` `ok = ``false``;``    ``for``(``int` `i = 0; i < n; i++)``    ``{``        ``for``(``int` `j = i + 2; j < n; j++)``        ``{``            ``if``(arr[i] == arr[j])``                ``ok = ``true``;``        ``}``    ``}``    ``if``(ok)``        ``return` `"YES"``;``    ``else``        ``return` `"NO"``;``}``    ` `// Driver code``static` `public` `void` `Main ()``{``    ``// Input values to list``    ``int` `[]Arr = { 1, 2, 2, 3, 2 };``    ` `    ``// Calculating length of array``    ``int` `N = Arr.Length;``    ``Console.WriteLine(SubPalindrome(N, Arr));``}``}` `// This code is contributed by shivanisinghss2110`

## Javascript

 ``
Output:

`YES`

Time Complexity:O(N^2)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up