当前位置: 首页 > article >正文

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");
	}
}


http://www.kler.cn/a/599069.html

相关文章:

  • 【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告
  • 4.4 前缀和专题:LeetCode 238. 除自身以外数组的乘积
  • 企业级前端架构设计与实战
  • 3.23 代码随想录第二十四天打卡
  • armsom产品qt交叉编译
  • 算法模型从入门到起飞系列——背包问题(探索最大价值的掘金之旅)
  • C# 资源管理‌(using 语句)
  • vscode中latex的tex文件和pdf跳转
  • (一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)
  • 区块链交易
  • 火绒终端安全管理系统V2.0——行为管理(软件禁用+违规外联)
  • 【Leetcode】430. 扁平化多级双向链表
  • SFT和RLHF是什么意思?
  • React + Node.js实践 仿B站评论
  • 邀请媒体参加线下活动
  • 基于DeepSeek的智能体搭建
  • HAL库中断的理解
  • 个人博客系统 --- 测试报告
  • linux--时区查看和修改
  • 深度学习2-线性回归表示