5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
提示:
1 <= s.length <= 1000 s 仅由数字和英文字母组成
package com.leetcode; / * @Author Handsome * @Date 2022/8/6 17:32 * @Version 1.0 */ public class 最长回文子串 {
public static void main(String[] args) {
System.out.println(longestPalindrome("babad")); // 输出结果为 aba } / * 动态规划 * 时间复杂度:O(n²) * 空间复杂度:O(n) */ public static String longestPalindrome(String s) {
int n = s.length(); String res = ""; boolean[] P = new boolean[n]; for (int i = n - 1; i >= 0; i--) {
for (int j = n - 1; j >= i; j--) {
P[j] = s.charAt(i) == s.charAt(j) && (j - i < 3 || P[j - 1]); if (P[j] && j - i + 1 > res.length()) {
res = s.substring(i, j + 1); } } } return res; } }
我的学习论坛
HandsomeForum:用Java编写的学习论坛,打造我们自己的圈子!(http://huangjunjie.vip:66)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214778.html原文链接:https://javaforall.net
