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

    }

相关推荐
掉鱼的猫2 分钟前
老码农教你 Solon Web Context-Path 的两种配置
java·nginx·tomcat
Forest232 分钟前
浅谈ArrayList的扩容机制
java·数据结构
小蒜学长13 分钟前
家庭财务规划与投资系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
汤永红18 分钟前
week5-[字符数组]查找
c++·算法·信睡奥赛
林内克思21 分钟前
inline内联函数
java·开发语言·算法
源代码•宸33 分钟前
Leetcode—1163. 按字典序排在最后的子串【困难】
经验分享·算法·leetcode·双指针
pengzhuofan2 小时前
Java设计模式-代理模式
java·设计模式·代理模式
现在,此刻2 小时前
from中烟科技&&翼支付 面试题1
java·面试
君不见,青丝成雪3 小时前
清分系统在电商中的一些案例
java·大数据·系统架构
天选之女wow4 小时前
【LeetCode】动态规划——542.01 矩阵
leetcode·矩阵·动态规划