首页 > 其他分享 >最长回文子串

最长回文子串

时间:2024-06-15 08:59:48浏览次数:11  
标签:子串 begin int len maxLen charArray 最长 dp 回文

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

public class Solution {
    public String longestPalindrome(String s) {
        int len = s.length();
        if (len < 2) {
            return s;
        }
        int maxLen = 1;
        int begin = 0;
        boolean[][] dp = new boolean[len][len];
        for (int i = 0; i < len; i++) {
            dp[i][i] = true;

        }
        char[] charArray = s.toCharArray();

        for (int L = 2; L <= len; L++) {
            for (int i = 0; i < len; i++) {
                int j = L + i - 1;

                if (j >= len) {
                    break;
                }
                if (charArray[i] != charArray[j]) {
                    dp[i][j] = false;

                } else {
                    if (j - i < 3) {
                        dp[i][j] = true;

                    } else {
                        dp[i][j] = dp[i + 1][j - 1];

                    }
                }
                if (dp[i][j] && j - i + 1 > maxLen) {
                    maxLen = j - i + 1;
                    begin = i;
                }
            }
        }
        return s.substring(begin, begin + maxLen);
    }
}

标签:子串,begin,int,len,maxLen,charArray,最长,dp,回文
From: https://blog.csdn.net/m0_67196959/article/details/139583589

相关文章

  • 【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【贪心/脑筋急转弯】2
    有LeetCode算法/华为OD考试扣扣交流群可加948025485可上全网独家的欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明示例三......
  • LeetCode 300. 最长递增子序列
    更多题解尽在https://sugar.matrixlab.dev/algorithm每日更新。组队打卡,更多解法等你一起来参与哦!LeetCode300.最长递增子序列,难度中等。动态规划解题思路:遍历数组,对于每个nums[i],检查其之前的所有元素nums[j]0......
  • 3637 最长上升子序列
    传送锚点:https://www.luogu.com.cn/problem/B3637题目描述这是一个简单的动规板子题。给出一个由\(n(n\le5000)\)个不超过\(10^6\)的正整数组成的序列。请输出这个序列的最长上升子序列的长度。最长上升子序列是指,从原序列中按顺序取出一些数字排在一起,这些数字是逐渐增......
  • pta最长对称子串
    直接双指针枚举,然后直接用stl(hh)includeincludeincludeusingnamespacestd;strings;intres=1;intmain(){charc;while(scanf("%c",&c)!=EOF){s.push_back(c);}for(inti=0;i<s.size();i++){for(intj=i+1;j<s.size();j++){stri......
  • 华为OD刷题C卷 - 每日刷题 23(提取字符串中的最长表达式,模拟目录管理功能 - 完整实现)
    1、提取字符串中的最长表达式目标是从一个给定的字符串中提取出最长的合法简单数学表达式,并计算该表达式的值。如果存在多个同样长度的合法表达式,则选择第一个出现的表达式进行计算。简单数学表达式的规则:只包含0-9的数字和+、-、*三种运算符。所有数字的计算结果不超过......
  • 程序分享--常见算法/编程面试题:最长公共前缀
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容,持续上传中。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满......
  • 【一百零九】【算法分析与设计】树状数组求解前缀最大值,673. 最长递增子序列的个数,
    树状数组求解前缀最大值树状数组可以求解和前缀区间有关的问题,例如前缀和,前缀区间最值.可以利用logn......
  • 华为OD刷题C卷 - 每日刷题 17(字符串序列判定,最长的指定瑕疵度的元音子串)
    1、(字符串序列判定):这段代码是解决“字符串序列判定”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于判断字符串S是否是字符串L的有效子串。main方法首先读取两个字符串S和L,然后调用getResult方法并打印最后一个有效字符在L中的位置。getResult方法......
  • [leetcode 30 串联所有单词的子串 10ms]
    算法复杂度o(1):复杂最坏复杂度是o(s.length)和o(m*total)的最大值码代码速度要变快,变量,算法要先想清楚importjava.util.*;classSolution{publicList<Integer>findSubstring(Strings,String[]words){m=words[0].length();n=words......
  • Q13 LeetCode76 最小覆盖子串
    1.难题2.need.containsKey(r)看hashmap中是否含有r3.明天再复盘一遍  1classSolution{2publicStringminWindow(Strings,Stringt){3if(s==null||s.isEmpty()||t==null||t.isEmpty()||s.length()<t.length())return"";4......