5. 最长回文子串
解题思路
1.双层for循环,动态规划
2.i、j分别循环,只记录最大值和最大长度
3.使用substring进行字符串截取
4.判断长度是否大于目前result的长度,如果大于,则判断是否为回文字符串(从两边到中间,去判断是否每个字符相等)
5.如果4满足,则更新result
后续需要总结学习的知识点
时间复杂度和空间复杂度需要后续优化
![](https://img.haomeiwen.com/i5014400/a2a8acf66f3275b7.png)
##解法1
class Solution {
public static String longestPalindrome(String s) {
String result = "";
for (int i = 0; i < s.length(); i++) {
for (int j = i; j < s.length(); j++) {
String temp = s.substring(i, j + 1);
if (temp.length() >= result.length() && isPalindrome(s, i, j)) {
result = temp;
}
}
}
return result;
}
public static boolean isPalindrome(String s, int start, int end) {
for (int i = start, j = end; i <= j; i++, j--) {
if (s.charAt(i) != s.charAt(j)) {
return false;
}
}
return true;
}
}
网友评论