
相比最长回文子序列,这道题目只需要多一次判断是否跨越两个字符串就行
java
class Solution {
public int longestPalindrome(String word1, String word2) {
String s=word1+word2;
int n=s.length();
int[][] dp=new int[n][n];
int result=0;
for(int i=n-1;i>=0;i--){
dp[i][i]=1;
for(int j=i+1;j<n;j++){
if(s.charAt(i)==s.charAt(j)){
dp[i][j]=dp[i+1][j-1]+2;
//回文串分别由word1和word2组成那么就更新结果
if(i<word1.length()&&j>=word1.length())
result=Math.max(result,dp[i][j]);
}
else
dp[i][j]=Math.max(dp[i+1][j],dp[i][j-1]);
}
}
return result;
}
}