2
public int longestPalindrome(String word1, String word2) {3
String lWord = word1 + word2;10
new int[lWord.length()][lWord.length()][2]);13
private int palindrome(14
String word, int start, int end, int boundary, boolean isFound, int[][][] dp) {15
if ((!isFound && (start >= boundary || end < boundary)) || (start > end)) return 0;17
if (dp[start][end][isFound ? 0 : 1] != 0) return dp[start][end][isFound ? 0 : 1];19
return dp[start][end][isFound ? 0 : 1] =20
word.charAt(start) == word.charAt(end)21
? ((start == end ? 1 : 2) + palindrome(word, start + 1, end - 1, boundary, true, dp))23
palindrome(word, start + 1, end, boundary, isFound, dp),24
palindrome(word, start, end - 1, boundary, isFound, dp));