দীর্ঘতম প্যালিন্ড্রোমিক পরবর্তীতে, জাভা কোডটি নিম্নরূপ -
উদাহরণ
public class Demo{ static String longest_seq(String str_1, String str_2){ int str_1_len = str_1.length(); int str_2_len = str_2.length(); char str_1_arr[] = str_1.toCharArray(); char str_2_arr[] = str_2.toCharArray(); int L[][] = new int[str_1_len + 1][str_2_len + 1]; for (int i = 0; i <= str_1_len; i++){ for (int j = 0; j <= str_2_len; j++){ if (i == 0 || j == 0){ L[i][j] = 0; } else if (str_1_arr[i - 1] == str_2_arr[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 my_index = L[str_1_len][str_2_len]; char[] longest_seq = new char[my_index + 1]; int i = str_1_len, j = str_2_len; while (i > 0 && j > 0){ if (str_1_arr[i - 1] == str_2_arr[j - 1]){ longest_seq[my_index - 1] = str_1_arr[i - 1]; i--; j--; my_index--; } else if (L[i - 1][j] > L[i][j - 1]){ i--; } else { j--; } } String my_result = ""; for (int x = 0; x < longest_seq.length; x++){ my_result += longest_seq[x]; } return my_result; } static String longestPalSubseq(String str){ String rev_str = str; rev_str = reverse_str(rev_str); return longest_seq(str, rev_str); } static String reverse_str(String str){ String my_result = ""; char[] trial = str.toCharArray(); for (int i = trial.length - 1; i >= 0; i--){ my_result += trial[i]; } return my_result; } public static void main(String[] args){ String str = "HelloHelloo"; System.out.println("Longest palindromic subsequence is "); System.out.println(longestPalSubseq(str)); } }
আউটপুট
Longest palindromic subsequence is llell
ডেমো নামের একটি ক্লাসে 'লংগেস্ট_সেক' ফাংশন রয়েছে যা দুটি স্ট্রিং এবং দুটি অক্ষর অ্যারে ঘোষণা করে। গতিশীল প্রোগ্রামিং কৌশল ব্যবহার করে অ্যারেগুলি পুনরাবৃত্তি করা হবে এবং দীর্ঘতম প্যালিনড্রোমিক ক্রম পাওয়া যাবে। এই পদ্ধতিতে, একবার একটি নির্দিষ্ট অ্যারের জন্য মান পাওয়া গেলে, এটি সংরক্ষণ করা হয় এবং পুনরায় গণনা করা হয় না, যার ফলে গণনাগুলি কার্যকর হয়৷
'longestPalSubseq' নামের একটি ফাংশন স্ট্রিংটিকে প্যারামিটার হিসাবে নেয় এবং স্ট্রিংটিকে বিপরীত করে এবং বিপরীত স্ট্রিংটি পাস করে 'longest_seq' ফাংশনটিকে কল করে। 'reverse_str' নামের আরেকটি ফাংশন ফাংশনে প্যারামিটার হিসেবে পাস করা স্ট্রিংটিকে বিপরীত করতে ব্যবহৃত হয়। প্রধান ফাংশনে, স্ট্রিংকে সংজ্ঞায়িত করা হয়, এবং ফাংশনটিকে 'লংগেস্টপাল সাবসেক' বলা হয় এবং কনসোলে আউটপুট প্রদর্শিত হয়।