longest palindrome subsequence(Recursion)
import java.util.*;
public class LongestPalindromicSequence {
public static int findLongest(String str) {
int idx = 0;
String curr = "";
ArrayList<String> subsequences = findSubsequence(str, idx, curr);
int maxLen = 0;
for (String subsequence : subsequences) {
if (isPalindrome(subsequence)) {
maxLen = Math.max(maxLen, subsequence.length());
}
}
return maxLen;
}
public static boolean isPalindrome(String subsequence) {
int n = subsequence.length();
for (int i = 0; i < n / 2; i++) {
if (subsequence.charAt(i) != subsequence.charAt(n - i - 1)) {
return false;
}
}
return true;
}
public static ArrayList<String> findSubsequence(String str, int i, String curr) {
ArrayList<String> subsequence = new ArrayList<>();
if (i == str.length()) {
subsequence.add(curr);
return subsequence;
}
subsequence.addAll(findSubsequence(str, i + 1, curr + str.charAt(i)));
subsequence.addAll(findSubsequence(str, i + 1, curr));
return subsequence;
}
public static void main(String[] args) {
System.out.println("Enter string:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(findLongest(str));
}
}
Comments
Post a Comment