Dado es un arreglo Arr de enteros. La tarea es determinar si la array tiene alguna subsecuencia de al menos 3 de longitud que sea un palíndromo.
Ejemplos:
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.
Acercarse:
- La idea es verificar solo la longitud 3 porque si existe una subsecuencia palindrómica de longitud mayor que 3, entonces siempre hay una subsecuencia palindrómica de longitud 3.
- Para encontrar la subsecuencia palindrómica de longitud 3 solo necesitamos encontrar un par de números iguales no adyacentes.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ code to check if // palindromic subsequence of // length atleast 3 exist or not #include<bits/stdc++.h> 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[0]); cout << SubPalindrome(N, Arr); } // This code is contributed by Bhupendra_Singh
Java
// Java code to check if // palindromic subsequence 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 subsequence 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 subsequence 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
<script> // Javascript code to check if // palindromic subsequence of // length atleast 3 exist or not function SubPalindrome(n, arr) { let ok = false; for (let i = 0; i < n; i++) { for(let j = i + 2; j < n; j++) { if(arr[i] == arr[j]) ok = true; } } if(ok) return "YES"; else return "NO"; } // Input values to list let Arr = [1, 2, 2, 3, 2]; // Calculating length of array let N = Arr.length; document.write(SubPalindrome(N, Arr)); </script>
Producción:
YES
Complejidad del tiempo: O(N^2)
Publicación traducida automáticamente
Artículo escrito por ishagoel30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA