leetcode 的T5 最长回文字符串

示例 1:

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

示例 2:

复制代码
输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000

  • s 仅由数字和英文字母组成

    package edu.contest;
    //T5 动态规划
    public class Solution4 {

    复制代码
      int arr[][] = new int[1000][1000];
      int max;
      String maxStr;
    
      public int calclong(String s, int i, int j) 
      {
      	if (arr[i][j] > 0)
      		return arr[i][j];
      	if (s.charAt(i) == s.charAt(j)) 
      	{
      		if (i == j - 1) 
      		{
      			arr[i][j] = 2;
      			if (arr[i][j] > max) 
      			{
      				max = Math.max(max, j - i + 1);
      				maxStr = (String) s.subSequence(i, j + 1);
      			}
      		}
      		if (i + 1 <= j - 1 && (calclong(s, i + 1, j - 1) != j - 1 - i)) // arr[i+1][j-1]
      		{
      			arr[i][j] = 0;
      		} else if (i + 1 <= j - 1 && calclong(s, i + 1, j - 1) == j - 1 - i) 
      		{
      			arr[i][j] = calclong(s, i + 1, j - 1) + 2;
      			// System.out.println("calclong"+" "+(i+1)+" "+(j-1)+"--->"+
      			if (arr[i][j] > max) 
      			{
      				max = Math.max(max, j - i + 1);
      				maxStr = (String) s.subSequence(i, j + 1);
      			}
      		}
      	} else
      		arr[i][j] = 0;
      	return arr[i][j];
      }
    
      public String longestPalindrome(String s) {
    
      	int max = 1;
      	// System.out.println(calclong(s,1,2));
      	
      	for (int i = 0; i < s.length(); i++)
      		arr[i][i] = 1;
      	maxStr = "" + s.charAt(0);
      	for (int i = 0; i < s.length(); i++)
      		for (int j = i + 1; j < s.length(); j++) {
      			arr[i][j] = calclong(s, i, j);
      		}
      	/*
      	 * for(int i=0;i<s.length();i++) { for(int j=0; j<s.length(); j++)
      	 * System.out.print(arr[i][j]+"\t"); System.out.println(); }
      	 * System.out.println(maxStr);
      	 */
      	return maxStr;
      }
    
      public static void main(String[] args) {
      	new Solution4().longestPalindrome("aaaa");
      }

    }

相关推荐
To_OC3 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
腻害兔3 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
2401_841495643 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
爱刷碗的苏泓舒7 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
维天说8 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane19949 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端