当前位置:   article > 正文

Leetcode【最长回文子串】

Leetcode【最长回文子串】

5. 最长回文子串

给你一个字符串 s,找到 s 中最长的 回文子串

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"
  1. public String longestPalindrome(String s) {
  2. int n = s.length(); // 字符串长度
  3. int max = 1; // 最长回文子串的长度
  4. if (n < 2) {
  5. return s; // 字符串长度小于2直接返回
  6. }
  7. boolean[][] dp = new boolean[n][n]; // dp数组,记录子串是否为回文
  8. int l = 0; // 最长回文子串的起始位置
  9. for (int i = 1; i < n; i++) {
  10. for (int j = 0; j < i; j++) {
  11. if (s.charAt(j) != s.charAt(i)) {
  12. dp[j][i] = false; // 不相等的字符,不是回文
  13. } else {
  14. if (i - j < 3) {
  15. dp[j][i] = true; // 相邻或间隔一个字符相等,是回文
  16. } else {
  17. dp[j][i] = dp[j + 1][i - 1]; // 更长的子串回文性由内部决定
  18. }
  19. }
  20. if (dp[j][i] && i - j + 1 > max) { // 更新最长回文子串的信息
  21. l = j;
  22. max = i - j + 1;
  23. }
  24. }
  25. }
  26. return s.substring(l, l + max); // 返回最长回文子串
  27. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/837058
推荐阅读
相关标签
  

闽ICP备14008679号