उदाहरण
public class Demo{
static String longestSeq(String str1, String str2){
int str1Len = str1.length();
int str2Len = str2.length();
char str1Arr[] = str1.toCharArray();
char str2Arr[] = str2.toCharArray();
int L[][] = new int[str1Len + 1][str2Len + 1];
for (int i = 0; i <= str1Len; i++){
for (int j = 0; j <= str2Len; j++){
if (i == 0 || j == 0){
L[i][j] = 0;
}
else if (str1Arr[i - 1] == str2Arr[j - 1]){
L[i][j] = L[i - 1][j - 1] + 1;
}
else{
L[i][j] = Math.max(L[i - 1][j], L[i][j - 1]);
}
}
}
int myIndex = L[str1Len][str2Len];
char[] longestSeq = new char[myIndex + 1];
int i = str1Len, j = str2Len;
while (i > 0 && j > 0){
if (str1Arr[i - 1] == str2Arr[j - 1]){
longestSeq[myIndex - 1] = str1Arr[i - 1];
i--;
j--;
myIndex--;
}
else if (L[i - 1][j] > L[i][j - 1]){
i--;
} else {
j--;
}
}
String myResult = "";
for (int x = 0; x < longestSeq.length; x++){
myResult += longestSeq[x];
}
return myResult;
}
static String longestPalSubseq(String str){
String revStr = str;
revStr = reverseStr(revStr);
return longestSeq(str, revStr);
}
static String reverseStr(String str){
String myResult = "";
char[] trial = str.toCharArray();
for (int i = trial.length - 1; i >= 0; i--){
myResult += trial[i];
}
return myResult;
}
public static void main(String[] args){
String str = "HelloHelloo";
System.out.println("सबसे लंबा पैलिंड्रोमिक सबसीक्वेंस है ");
System.out.println(longestPalSubseq(str));
}
}आउटपुट
सबसे लंबा पैलिंड्रोमिक सबसीक्वेंस है llellDemo नाम की एक क्लास में 'longestSeq' फ़ंक्शन होता है जो दो स्ट्रिंग्स और दो कैरेक्टर Arrays घोषित करता है। Arrays पर पुनरावृति की जाएगी, और डायनामिक प्रोग्रामिंग तकनीक का उपयोग करके सबसे लंबा पैलिंड्रोमिक अनुक्रम ढूंढा जाता है। इस मेथड में, एक बार किसी विशिष्ट Array के लिए मान मिल जाने पर, उसे स्टोर कर लिया जाता है और फिर से कंप्यूट नहीं किया जाता, जिससे गणना कुशल हो जाती है।
'longestPalSubseq' नाम का एक फ़ंक्शन स्ट्रिंग को पैरामीटर के रूप में लेता है, और स्ट्रिंग को रिवर्स करता है और रिवर्स्ड स्ट्रिंग को पास करके 'longestSeq' फ़ंक्शन को कॉल करता है। 'reverseStr' नाम का एक अन्य फ़ंक्शन फ़ंक्शन को पैरामीटर के रूप में पास की गई स्ट्रिंग को रिवर्स करने के लिए उपयोग किया जाता है। मुख्य फ़ंक्शन में, स्ट्रिंग को परिभाषित किया जाता है, और 'longestPalSubseq' फ़ंक्शन को कॉल किया जाता है, और आउटपुट कंसोल पर प्रदर्शित होता है।