在Java中,我们可以使用动态规划的方法来解决这个问题。下面是具体的代码实现:
public class Solution {
public String longestPalindrome(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
int start = 0, end = 0;
for (int i = 0; i < strs.length; i++) {
int len1 = expandAroundCenter(strs[i], i, i);
int len2 = expandAroundCenter(strs[i], i, i + 1);
int len = Math.max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return strs[start];
}
private int expandAroundCenter(String s, int left, int right) {
int L = left, R = right;
while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
L--;
R++;
}
return R - L - 1;
}
}
这个函数首先检查输入的字符串数组是否为空,如果为空则直接返回空字符串。然后,它遍历每个字符串,并尝试以该字符串为中心找到最长的回文子串。这是通过调用expandAroundCenter
方法来实现的,该方法会向两边扩展,直到找不到相同的字符为止。最后,它返回最长的回文子串。